Menu

Vurnerabilitatea SQL Injection

In lectiile anterioare, despre MySQL, am folosit metoda real_escape_string din obiectul mysqli pentru a securiza aplicatia noastra, dar pentru ca programarea este o stiinta nu ne place doar sa auzim ca este bine sa facem intr-un fel, trebuie sa si stim exact de ce.

1. Ce este MySQL Injection?

Vurnerabilitatea SQL Injection ii permite atacatorului sa extraga date din baza ta de date in caz ca nu ai filtrat unele variabile deoarece poate sa-ti modifice sintaxele iar astfel are control total asupra bazelor tale de date. In caz ca are si dreptul de a scrie fisiere iti poate si uploada un shell pe site iar astfel are control total asupra site-ului tau.

2. Detalii, Detalii si Detalii

Sa dam urmatoarea sintaxa:
SELECT * FROM `agenda` WHERE `nume`='din formular'
unde din formular este o valoare primita dintr-un parametru GET si nefiltrat. Dar cum arata sintaxa cand cineva expluateaza pagina? Imagineaza-ti ca el poate introduce caracterul '(ghilimele simple) astfel poate „iesii” din acel string si poate rescriere codul SQL. Sintaxa ar arata in felul urmator:
SELECT * FROM `agenda` WHERE `nume`='aa' union all select 1,2,3,4,5,6
unde 1,2,3,4,5,6 ar venii numarul coloanelor tale(aflate anterior de atacator cu ajutorul ORDER BY).In fine, o sintaxa completa este mult mai lunga dar nu asta ne intereseaza pe noi acum.

3. Rezolvare

  • Folositi cu incredere functia mysqli_real_escape_string.
  • Mai puteti pune o functie sa verifice parametrii(GET,POST,COOKIE) si sa va alerteze prin e-mail in caz ca gasesc cuvinte gen: "union select","order by","/**/" si multe altele.
  • Nu afisati niciodata erorile cand site-ul este terminat, inregistratile intr-un fisier in care accesul este blocat prin .htaccess
  • Sa nu aveti niciodata incredere in vizitator!

Cam atat cu acest articol, am ales sa fie foarte scurt sub forma unei atentionari asupra viitorilor programatori deoarece securitatea este cel mai important aspect intr-o aplicatie.



Ti-a placut articolul? Asigura-te ca-ti dam de veste cand publicam altele noi.


Tags: Tutoriale, Programare Web, Php, Php Si Mysql, Curs Php

Comments Nota 0 din 0