Innehållsförteckning:
Definition - Vad betyder SQL Injection?
En SQL-injektion är en datorattack där skadlig kod är inbäddad i ett dåligt utformat program och sedan skickas till backend-databasen. De skadliga uppgifterna producerar sedan databasfrågor eller handlingar som aldrig borde ha utförts.
Techopedia förklarar SQL Injection
Låt oss gå igenom ett exempel på en SQL-injektionsattack:
En applikation som kör en banks verksamhet innehåller menyer som kan användas för att söka efter kundinformation med hjälp av datapunkter som kundens personnummer. I bakgrunden anropar applikationen en SQL-fråga som körs i databasen genom att lämna de angivna sökvärdena enligt följande:
VÄLJ klientnamn, telefon, adress, datum_födelse VAR social_sec_no = 23425
I det här exempelskriptet anger användaren 23425-värdet i applikationsmenyfönstret och ber användaren att ange personnummer. Sedan, med det värde som tillhandahålls av användaren, körs en SQL-fråga i databasen.
En användare med SQL-kunskap kan förstå applikationen och, istället för att ange ett enda värde när han frågas om Social Security-numret, ange strängen "23425 eller 1 = 1, " som skickas till databasen enligt följande:
VÄLJ klientnamn, telefon, adress, datum_födelse VAR social_sec_no = 23425 eller 1 = 1
WHERE-klausulen är viktig eftersom den introducerar sårbarhet. I en databas är villkoret 1 = 1 alltid sant, och eftersom frågan har angetts för att returnera klientens sociala säkerhetsnummerinformation (23425) eller VAR 1 = 1 kommer frågan att returnera alla rader i tabellen, vilket inte var original avsikt.
Ovanstående exempel på SQL-injektionsattack är enkelt, men det visar hur man utnyttjar en sårbarhet för att lura applikationen till att köra en backend-databasfråga eller -kommando.
SQL-injektionsattacker kan mildras genom att säkerställa korrekt applikationsdesign, särskilt i moduler som kräver användarinmatning för att köra databasfrågor eller kommandon. I exemplet ovan kan applikationen ändras så att den endast accepterar ett numeriskt värde.
