Sari la conținut
De citit
Injecția SQL: cum păcălește un formular baza de date a unui site
IT / Tech

Injecția SQL: cum păcălește un formular baza de date a unui site

Injecția SQL este un atac în care cineva introduce într-un formular text special, iar site-ul îl execută ca pe o comandă către baza de date. Cauza este codul care amestecă datele primite de la utilizator cu interogările. Pe LumeaTehnologiei găsești explicații despre securitate online, iar acest atac este unul dintre cele mai vechi și mai instructive.

Cum ajunge un formular să fie vulnerabil

Un site stochează utilizatori, comenzi sau articole într-o bază de date. Când cauți un produs sau te autentifici, aplicația construiește o interogare în limbajul SQL, folosind ce ai scris tu în câmp.

Problema apare când textul tău este lipit direct în interogare, fără separare. Atacatorul nu mai scrie un nume sau o parolă, ci o bucată de text care schimbă sensul interogării. Baza de date nu face diferența între ce a vrut programatorul și ce a introdus utilizatorul.

Ce poate merge prost

Consecințele depind de modul în care a fost construit site-ul:

  • citirea unor date care nu ar trebui să fie vizibile, de exemplu conturi sau comenzi;
  • ocolirea autentificării, dacă verificarea parolei este vulnerabilă;
  • modificarea sau ștergerea datelor;
  • în cazuri grave, preluarea controlului asupra serverului.

De aceea, un formular simplu de căutare poate deveni o cale de acces spre date sensibile.

De ce a rezistat atât de mult atacul

Mecanismul este simplu și apare în aplicații scrise în grabă, în module vechi sau în cod copiat fără verificare. Multe site-uri mici folosesc scripturi care nu au fost niciodată auditate. Instrumentele automate caută astfel de breșe pe scară largă, deci nu trebuie să fii o țintă importantă ca să fii afectat.

Cum se apără programatorii

Soluția principală este separarea datelor de comandă. Se numește interogare parametrizată sau „prepared statement”: aplicația trimite întâi structura interogării, apoi valorile, iar baza de date le tratează strict ca date. Textul introdus nu mai poate schimba logica.

Alte măsuri completează apărarea: validarea tipului de date acceptate, utilizarea unui cont de bază de date cu drepturi minime, afișarea de mesaje de eroare generice și actualizarea regulată a aplicațiilor. Un firewall de aplicație ajută, dar nu înlocuiește un cod corect.

Ce poți face tu ca utilizator

Nu poți repara codul unui site, dar îți poți limita pagubele. Folosește parole diferite pentru fiecare serviciu. Dacă un site anunță un incident, schimbă imediat parola. Ține minte că parolele ar trebui stocate doar într-o formă protejată, iar modul în care site-urile își păstrează parolele îți arată cât de mult contează acest lucru.

Ce poți face dacă îți administrezi propriul site

Actualizează platforma și pluginurile, șterge ce nu folosești și cere dezvoltatorilor să folosească interogări parametrizate. Testează site-ul periodic și, dacă ai date de clienți, ia în serios auditul de securitate.

Greșeli frecvente

Prima este să crezi că „site-ul meu e prea mic ca să fie atacat”. A doua este să te bazezi doar pe validarea din browser, care poate fi ocolită. A treia este să afișezi mesaje de eroare detaliate vizitatorilor.

Pentru cine vrea să înțeleagă mai bine baza tehnică, LumeaTehnologiei explică, pe înțelesul tuturor, cum se stochează și cum se protejează datele online.

Recomandare practică

Dacă ești dezvoltator, nu construi niciodată interogări prin lipirea textului primit de la utilizator. Dacă ești utilizator, protejează-ți conturile cu parole unice. LumeaTehnologiei te ajută să înțelegi, fără jargon, ce se află în spatele paginilor pe care le folosești zilnic.