+40 726 471 311 [email protected]

Injecția SQL: Ghid Complet de Prevenire pentru Proprietarii de Site-uri

Înțelegerea Injecției SQL: Mecanismele din Spatele Atacurilor
Metode Eficiente de Prevenire a Injecției SQL: Ghid Pas cu Pas

Solicită ofertă
Cum funcționează injecția SQL și cum să o prevenim

Cum funcționează injecția SQL și cum să o prevenim

Razvan Pavel    31 Jul, 2025    0 Comentarii

🛡️ Injecția SQL (SQLi): Ce Este, Cum Funcționează și Cum Să o Previi

SQL Injection (SQLi) este una dintre cele mai periculoase vulnerabilități web. Aceasta permite atacatorilor să acceseze, modifice sau șteargă date din baza de date a unei aplicații. Iată cum funcționează și cum o poți preveni eficient.


⚙️ Ce Este Injecția SQL?

Injecția SQL apare atunci când datele introduse de utilizatori sunt incluse direct în interogări SQL fără o validare sau protecție adecvată. Acest lucru permite executarea de comenzi malițioase care afectează baza de date.

Exemplu de cod vulnerabil:

sql
CopiazăEditează
SELECT * FROM users WHERE username = '$username' AND password = '$password';

Dacă un atacator introduce ' OR '1'='1, autentificarea poate fi ocolită complet.


🚨 Exemple de Atacuri SQLi

  • Autentificare frauduloasă
  • Furt de date personale
  • Modificarea sau ștergerea datelor
  • Acces la serverul de baze de date
  • Executarea de comenzi pe server

🔐 Cum Prevenim Injecțiile SQL?

✅ 1. Folosește Interogări Parametrizate (Prepared Statements)

Evită construirea interogărilor SQL manual. Exemple:

php
CopiazăEditează
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :user AND password = :pass"); $stmt->bindParam(':user', $username); $stmt->bindParam(':pass', $password); $stmt->execute();

✅ 2. Escape corect al datelor

Dacă nu poți folosi PDO, atunci folosește mysqli_real_escape_string():

php
CopiazăEditează
$username = mysqli_real_escape_string($conn, $_POST['username']);

✅ 3. Validează toate datele

  • Verifică lungimea, tipul și formatul.
  • Nu permite caractere periculoase în câmpuri sensibile.

✅ 4. Aplică Principiul Minimului Privilegiu

  • Contul MySQL al aplicației nu trebuie să aibă permisiuni de tip DROP, DELETE etc.

✅ 5. Folosește un ORM

  • Framework-uri precum Laravel, Symfony sau Doctrine folosesc ORM-uri care oferă protecție nativă.

✅ 6. Activează un Web Application Firewall (WAF)

  • Protecție suplimentară împotriva atacurilor automate.

✅ 7. Testează și auditează codul regulat

  • Folosește instrumente de testare (SQLMap, Burp Suite).
  • Efectuează audituri periodice de securitate.

✅ Concluzie

SQL Injection este o amenințare reală, dar complet evitabilă. Aplică interogări parametrizate, validează datele utilizatorilor și limitează accesul în baza de date. Prevenția este întotdeauna mai ieftină decât remedierea unui atac.

Comentarii

Fii primul care comentează acest articol.

Lasă un comentariu