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.