Hoppa till innehållet

SQL-injektion

Från Wikipedia

SQL-injektion (engelska SQL injection) är ett sätt att utnyttja säkerhetsproblem i hanteringen av indata i vissa datorprogram som arbetar mot en databas. Injektionen sker genom att en användare skickar in parametrar till en databasfråga, utan att parametrarna transformeras korrekt med avseende på speciella tecken, som escapesekvenser. Med anpassade parametrar kan en användare kringgå inloggningssystem och manipulera data.

Metoden har fått sitt namn av databasfrågespråket SQL.

Ett inloggningssystem skrivet i pseudokod skulle kunna skapa en SQL-sats för att undersöka om ett lösenord (det vill säga systemets indata) är korrekt:

$sqlquery = "SELECT * FROM users WHERE user = '" + $user + "' and password = '" + $password + "'"

Med användarnamnet anna och lösenordet abc123 blir SQL-satsen:

SELECT * FROM users WHERE user = 'anna' and password = 'abc123'

Om en illasinnad användare som lösenord skriver in ' OR '' = ' så blir SQL-satsen i stället:

SELECT * FROM users WHERE user = 'anna' and password = '' OR '' = ''

Jämförelsen längst till höger mellan två tomma strängar kommer alltid att leda till att resultatet blir sant, och användaren kommer alltid att loggas in.

Vissa program eller mjukvaror t.ex: Havij, SQL-Map, SQL-Ninja,Tyrant-SQL söker automatiskt efter injektionspunkter och genererar lämpliga SQL-satser för att exploatera sådana punkter i förekommande fall.