En SQL-injektion (Structured Query Language) är en typ av attack som nästan alltid görs mot en webbplats som är databasdriven. Det är en strävan att infoga skadlig kod i SQL-frågorna på webbplatsen för att störa datahanteringen genom att förstöra, ändra eller avslöja data som lagras i tabellerna i databasen som driver webbplatsen. SQL är ett standardprogrammeringsspråk som används för att skapa, uppdatera och hämta data som lagras i databaser.
Farorna med SQL-injektionsattacker är många och ofta mycket förödande när de genomförs framgångsrikt. Känslig information som kreditkortsnummer, en persons journaler, användarnamn och lösenord för konton som nätbank och e-post samt olika typer av identifikationsnummer kan utsättas för cyberbrottslingar. Även om stöld av data förmodligen är det huvudsakliga målet för alla som försöker använda SQL-injektion, är det inte den enda motivationen för användningen av denna eller någon annan typ av kodinjektionsteknik, såsom cross-site scripting. Besökare på en webbplats som visar information som de inte gillar kan försöka SQL-injektionsattacker för att inaktivera webbplatsen, stjäla data eller ändra data för att förstöra uppdraget för personerna bakom webbplatsen.
Ibland försöker en SQL-injektionsattack mot en webbplats av en missnöjd besökare som kan ha fått sitt konto förbjudet av webbplatsens ägare, som avundas webbplatsens popularitet eller som försöker förstöra onlineverksamheten för någon som han eller hon anser vara vara en fiende. Kunskap om SQL krävs givetvis för att starta en SQL-injektionsattack, men det anses generellt inte vara ett särskilt svårt språk att lära sig, jämfört med andra programmeringsspråk, och mycket kan åstadkommas med bara en grundläggande, men solid, förståelse för hur man använder Det. Detta innebär att det finns ett stort antal människor som surfar på Internet som har den nödvändiga skickligheten att försöka använda SQL-injektion mot en webbplats.
Webbutvecklare, särskilt de som är specialiserade på back-end webbutveckling, är ansvariga för att se till att webbplatserna de programmerar är säkra mot SQL-injektion. Det finns nästan alltid mer än ett sätt att uppnå så viktig säkerhet, och de flesta av dessa metoder anses vara enkla men mycket effektiva lösningar. Till exempel kan en utvecklare använda funktionen mysql_real_escape_string() eller förberedda satser när man skriptar i språket hypertext preprocessor (PHP). De metoder som valts för att skydda mot attacker måste övervägas noggrant, eftersom webbplatsens prestanda som helhet inte kan bortse från ens när man ställer in säkerhet.