
SQL injekcijos yra vienas iš tinklapių nulaužimo būdų, ir, tiesą pasakius, vienas iš populiariausių. Pavyzdžiui, SQL užklausa atrodo taip: “SELECT * FROM users WHERE username = ‘” . $_POST['username'] . “‘”. Lyg ir nieko ypatingo, standartinis variantas. Tačiau, pažiūrėkime, kas bus, jeigu $_POST['username'] bus lygi “a’ or ’1′=’1″. Užklausa bet kuriuo atveju grąžins visus lentelės įrašus, ir didelė tikimybė, kad žmogus prisijungs prie tinklapio be jokių slaptažodžių. Kaip nuo to apsisaugoti? Skaitykite toliau.
Na, visų pirma, turėtumėte žinoti, kokios būna SQL injekcijos, tada nuo kiekvienos iš jų galima apsisaugoti. Tiesiog galima įrašyti į Google “sql injections” ir rasite begalę informacijos. Tačiau čia duosiu nuorodą į straipsnį, kuriame surinkta taip vadinama SQL Injection Cheat Sheet. Trumpai tariant, tai yra “špargalkė”, kurioje glaustai surašyta viskas, ką reikia žinoti apie SQL injekcijas. Pažymėti reikia tai, kad šiuo atveju tekstai orientuoti ne tik į MySQL, bet ir į kitas duomenų bazių sistemas: SQL Server, PostgreSQL, Oracle. Bet yra ir atskira skiltis “About MySQL and PHP”, kuri bus turbūt aktualiausia.
Štai kaip atrodo visas straipsnio turinys:

Pabaigai patarimas: jei tinklapį kursite iš požiūrio “kol veikia, tegul veikia”, tada patarčiau daryti duomenų atsargines kopijas kas kažkiek laiko, nes niekada negali žinoti, ar neateis tokia diena, kada kokia nors SQL injekcija arba dar kitas nulaužimo būdas pakeis jūsų tinklapio gyvenimą.
Dar kartą nuoroda: SQL Injection Cheat Sheet






March 18, 2009 12:57 pm
[...] krautis sparčiau. • Renginių organizavimas su invite.lt pagalba – paprastas ir efektyvus. • Apsauga nuo SQL įterpimo nėra sudėtinga, bet reikalauja [...]
March 19, 2009 1:33 pm
Pamiršai pasakyti KAIP nuo SQL injekcijų apsisaugoti
primink apie addslashes, htmlspecialchars ir pan f-jas.
galima net real-life pavyzdžių pateikt (kad ir su vienu iš elektroninių dienynų)
March 19, 2009 1:37 pm
Na matai, nesinori kartoti to paties, kas labai gerai parašyta straipsnyje, į kurį yra nuoroda. Bet manau, kad parašysiu atskirą straipsnį SQL injekcijos pavyzdžių, bet kiek vėliau
March 20, 2009 9:23 pm
Už linką tai labai dėkui nemažai naudongo galima išskaityt aišku reikia norėti bet nedaug žmonių šiais laikais nori tai daryti
March 23, 2009 11:53 am
Apie prepared statement’us parašyt nepamiršk
December 31, 2010 7:14 am
Niekada nevartokite viengubų kabučių ‘, tai labai blogai, naudokite dvigubas ” ir jūs visada būsite saugus, dar prieš kiekvieną funkciją naudokite @.
Tokią užklausą galima nulaužti:
$sql = mysql_query(“SELECT * FROM lentele where pass=’$slaptazodis’”);
duomenis ištraukti galima vietoje $slaptazodis panaudojus ‘ or ’1′=’1
Saugi:
$sql = @mysql_query(“SELECT * FROM lentele where pass=\”$slaptazodis\”");
December 7, 2011 9:26 pm
ooo dekuj pagelbejot labai