SQL Escape/Unescape si riferisce al processo di sanificazione dell'input di testo in modo che possa essere incorporato in modo sicuro nelle istruzioni SQL.
L'escape modifica i caratteri speciali (come virgolette o barre rovesciate) in modo da prevenire errori di sintassi o l'esecuzione di codice dannoso.
L'unescaping converte i caratteri di escape nella loro forma originale, solitamente per la visualizzazione o per un'ulteriore elaborazione.
Per prevenire attacchi di iniezione SQL, in cui un input dannoso può alterare la logica di una query SQL.
Per evitare errori di sintassi nelle query quando i dati contengono caratteri come ', " o \.
Per mantenere l'integrità dei dati, assicurandosi che l'input dell'utente venga memorizzato e recuperato esattamente come inserito.
L'escape si esegue:
Raddoppiando gli apici singoli nelle stringhe (ad esempio, 'O'Brien' diventa 'O''Brien').
Utilizzando funzioni o librerie di database integrate per eseguire correttamente l'escape degli input.
L'escape si verifica durante il recupero dei dati, spesso gestito automaticamente dal database o dal livello applicativo.
Nello sviluppo moderno, questo viene in genere gestito da query parametrizzate o ORM (Object-Relational Mapper), che gestiscono l'escape in modo sicuro e automatico.
Quando si inserisce o interroga l'input utente direttamente in SQL non elaborato (sconsigliato a meno che non venga eseguito correttamente l'escape).
Quando si ha a che fare con sistemi legacy o stringhe SQL non elaborate in cui non è attiva la protezione automatica.
Eseguire sempre l'escape degli input a meno che non si utilizzino istruzioni preparate o istruzioni parametriche query, che rappresentano le alternative preferite e più sicure.