Organizacija OWASP (eng. Open Web Application Security Project) je ocijenila napad umetanjem SQL (eng. Structured Query Language) koda jednim od 10 najopasnijih napada na web stranice. Udaljeni napadači mogu izvesti napade poput: prikupljanja osjetljivih informacija, izmjena podataka u bazi podataka, povećanje ovlasti ili izvesti DoS (eng. Denial of Service) napad.

Napadi se izvode umetanjem posebno oblikovanog SQL koda u polja za unos podataka (poput polja za unos korisničkog imena i lozinke) ili URL (eng. Uniform Resource Locator) adrese. Glavni uzroci ranjivosti web stranica na ovaj oblika napada su nedovoljne provjere podataka koje korisnik može unijeti (poput, primjerice, korisničkog imena).

Uvođenjem jednostavnih provjera moguće je odvratiti veliki dio zlonamjernih korisnika od napada. U dokumentu se opisuju najčešći oblici napada umetanjem SQL koda, koji su popraćeni primjerima. Također, navedene su neke metode koje onemogućuju veliki broj napada umetanjem SQL koda.

 

Napad umetanjem [SQL] (eng. Structured Query Language) koda je jedan od 10 najopasnijih napada na web stranice. Sve web stranice koje za svoj rad koriste bazu podataka mogu biti potencijalna meta. Ovi napadi utječu na povjerljivost, autentikaciju, autorizaciju i integritet podataka baze podataka. Brojne web stranice su postala meta ovog oblika napada, a najčešći cilj napada je bila krađa korisničkih podataka zapisanih u bazi podataka, poput podataka o kreditnim karticama ili adresama elektroničke pošte.

Napad je moguć zbog nedovoljnih provjera korisničkih podataka, poput podatka o korisničkom imenu kojeg korisnik upisuje prilikom prijave. Napadač može iskoristiti polje za unos kako bi umetnuo posebno oblikovani SQL kod i tako izveo napad. Drugi način umetanja je kroz URL (eng. Uniform Resource Locator) adresu. Napadi mogu rezultirati: prikupljanjem podataka o bazi, zaobilaženjem prijave, otkrivanjem podataka u bazi, izmjenom podataka u bazi, uništavanjem baze, povećanjem ovlasti napadača, pokretanjem proizvoljnih naredbi te i DoS (eng. Denial of Service) napadom.

Najpoznatiji SQL kod čije umetanje može izazvati napad je oblika „' OR 1=1“, a koristi se za ispitivanje ranjivosti web stranice na napad umetanjem SQL koda ili za zaobilaženje prijave. Napadi često nižu nekoliko SQL naredbi pomoću znaka točka-zarez, koriste znak dvostrukih crtica koje označavaju komentar u SQL kodu, a napadač može koristiti i unaprijed pohranjene procedure (poput xp_cmdshell) koje proširuju mogućnosti baze, ali i napadačeve mogućnosti.

Uvođenjem jednostavnih provjera moguće je obraniti web stranicu od većine napada umetanjem SQL koda. Preporuča se na poseban način obraditi sve primljene podatke koji: sadrže sumnjive znakove poput znaka točke-zareza, dvostrukih crtica ili navodnika, sadrže SQL ključne riječi, ne odgovaraju očekivanom tipu podataka ili sadrže preveliki broj znakova. Također, preporuča se zaštiti bazu podataka i poslužitelja tako da se mogućnost izmjene podataka omogućuje samo maloj skupini korisnika s administratorskim ovlastima.

Još jedan način borbe protiv napada je korištenje neuobičajenih imena za tablice i atribute u bazi podataka te minimiziranje informacija koje su dostupne u porukama greške. Time se napadaču otežava prikupljanje informacija o bazi podataka što je prvi korak u izvođenju napada. Ako napadač ne zna strukturu baze podatka te imena tablica i atributa ne može izvesti napad.

Razvijeni su brojni programi koji omogućuju provjeru sigurnosti web stranica. Ovi programi izvode automatizirane napade umetanjem SQL koda kako bi otkrili ranjivosti web stranice i doseg iskorištavanja ranjivosti. Nakon uspješno izvedenog napada, pružaju povratnu informaciju koju administratori mogu iskoristiti kako bi povećali sigurnost svoje web stranice.

Sve se više razvijaju programi koji aktivno sudjeluju u zaštiti baze podataka od napada umetanjem SQL koda. Ovi programi djeluju kao vatrozid baze podataka i stoje između poslužitelja koji prima klijentske zahtjeve i baze podataka. Prije prosljeđivanja SQL upita bazi, programi provjeravaju dobiveni upit tražeći „sumnjive“ SQL upite koji se odmah odbacuju.