En SQL- injektion är en illvillig attack på en databas , där en angripare skär , eller injicerar , en SQL -fråga - en formell begäran till databasen - till en sträng som slutligen utförs av databasen ? , via de uppgifter som han går in i ett datorprogram . Om det lyckas , kan en SQL- injektion extrahera känsliga data från databasen , infoga, uppdatera eller ta bort data eller ens stänga av systemet databashantering . Dynamisk SQL
SQL injection utnyttjar en programmeringsteknik som kallas " dynamisk SQL . " Den fullständiga texten till en dynamisk SQL-sats , eller kommando , är okänt när ett program kompileras , men är konstruerad , dynamiskt , från indata av användaren när programmet körs . En angripare avslutar konstruerade kommandot tidigt och lägger ett nytt kommando , avslutas med en kommentar märket, som t.ex. " - " , så att eventuella text ignoreras vid exekveringstid . I en något mer sofistikerad form av SQL- injektion , injicerar en angripare skadlig kod i de data som lagras i databasen , när den lagrade data hämtas och används för att konstruera en dynamisk SQL-sats , är den skadliga koden exekveras
< . br >
Effekter
Exakt vad angripare kan uppnå genom SQL- injektion beror på deras fantasi och skicklighet , men typiska konsekvenser av en SQL- injektion är förlust av konfidentiellt , förlust av dataintegritet och problem relaterade till autentisering , eller tillstånd , av användarna av databasen . Om auktorisation information lagras i själva databasen , kan en SQL- injektion extrahera informationen , eller modifiera den , så att obehöriga användare kan ansluta till databasen .
Berörda plattformar
SQL injection gäller naturligtvis SQL , det vanligaste databasen query Language , men alla plattformar som kräver interaktion med en SQL-databas kan påverkas . SQL injection sårbarheter är lätta att upptäcka och lätta att utnyttja , vilket har inneburit att SQL-injektion har blivit ett vanligt problem med paket databasprogram och databasdrivna webbplatser . Addera Validering
Om en attack injicerar skadlig SQL -kod som körs utan fel , det finns inget sätt att upptäcka SQL-injektion från ett datorprogram . Databas programmerare måste därför granska all programkod som konstruerar dynamiska SQL-satser och validera all indata från användaren , utan att göra några antaganden om storleken , innehåll eller typ av data . En angripare avsiktligt kan bädda in en " DROP TABLE " uttalande , eller någon annan , lika skadlig uttalande i ett textfält , så programmerare måste se till att program beter sig lämpligt under sådana omständigheter .