Hoppa till innehållet

SQL-injektion

Från Wikipedia
Version från den 7 november 2007 kl. 00.21 av Caesar (Diskussion | Bidrag) (omformulerar, formatering, exempelputs)

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.

Exempel

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.

Externa länkar