SQL-injektion är ett vanligt säkerhetsproblem på webbsidor. Det uppstår genom att okontrollerad data skickas direkt in i en SQL-fråga. På så sätt ändras skriptets ursprungliga funktionalitet.
Ett SQL-injektion-säkerhetshål kan utnyttjas på många olika sätt. Databaser kan raderas, lösenord kan stjälas och så vidare.
Vi tar ett inloggningsskript som ett exempel. Följande SQL-fråga skulle mycket väl kunna användas i ett sådant skript.
SELECT * FROM users WHERE username = '$username' AND password = '$password'
Om någon nu skulle skriva in "Admin" som användarnamn och "'or '1'='1" som lösenord så skulle frågan se utan som följer.
SELECT * FROM users WHERE username = 'Admin' AND password = ''or '1'='1'
Det skulle resultera att personen i fråga skulle bli inloggad som Admin, i och med att 1 alltid är lika med 1.