SQL escape/unescape se referă la procesul de sanitizare a textului introdus, astfel încât acesta să poată fi încorporat în siguranță în instrucțiuni SQL.
Escape modifică caracterele speciale (cum ar fi ghilimelele sau barele oblice inversate) într-un mod care previne erorile de sintaxă sau executarea de cod rău intenționat.
Unescape convertește caracterele escape înapoi la forma lor originală, de obicei pentru afișare sau procesare ulterioară.
Pentru a preveni atacurile SQL injection, unde intrarea rău intenționată poate modifica logica unei interogări SQL.
Pentru a evita erori de sintaxă în interogări atunci când datele conțin caractere precum ', " sau \.
Pentru a menține integritatea datelor, asigurați-vă că datele introduse de utilizator sunt stocate și recuperate exact așa cum au fost introduse.
Escape-ul se face prin:
Dublarea ghilimelelor simple în șiruri (de exemplu, 'O'Brien' devine 'O''Brien').
Utilizarea funcțiilor sau bibliotecilor încorporate în baza de date pentru a elimina corect intrările.
Unescape-ul apare la recuperarea datelor, adesea gestionat automat de baza de date sau de aplicația dvs. strat.
În dezvoltarea modernă, acest lucru este de obicei gestionat de interogări parametrizate sau ORM-uri (Object-Relational Mappers), care gestionează escape-ul în siguranță și automat.
Când se inserează sau interoghează intrarea utilizatorului direct în SQL brut (nu este recomandat decât dacă se utilizează escape-ul corect).
Când se lucrează cu sisteme vechi sau șiruri SQL brute unde protecția automată nu este implementată.
Se utilizează întotdeauna escape-uri de intrări, cu excepția cazului în care se utilizează instrucțiuni pregătite sau interogări parametrizate, care sunt alternativele preferate și mai sigure.