Mysql
 sql >> Database >  >> RDS >> Mysql

Dove usare mysql_real_escape_string per prevenire SQL injection?

Fondamentalmente, ogni volta che utilizzi alcuni dati non sicuri (input dell'utente, valore da un database, un file o un sito Web esterno, ovvero qualsiasi dato che non sei 100% sicuro che sia sicuro) in una query SQL, dovresti eseguirne l'escape usando mysql_real_escape_string . Tieni presente che secondo OWASP , questa funzione non è sicura per l'escape dei nomi di tabelle dinamici (ma è molto meno comune dell'inserimento di input utente "di base").

Ti suggerisco di dare un'occhiata all'intero articolo OWASP su SQL injection e anche per navigare nel resto del sito web. È un'ottima fonte di informazioni sulla sicurezza nelle applicazioni web.

IMO, il modo migliore per prevenire l'SQL injection è usare dichiarazioni preparate .

Ricorda che se scegli di usare mysql_real_escape_string() funziona solo se utilizzato all'interno di una stringa delimitata da virgolette. Non usarlo mai su valori non quotati. Ciò include valori numerici; invece, verifica che l'input dell'utente sia effettivamente numerico.