Pada dasarnya, setiap kali Anda menggunakan beberapa data yang tidak aman (input pengguna, nilai dari database, file, atau situs web eksternal, yaitu data apa pun yang Anda tidak 100% yakin aman) dalam kueri SQL, Anda harus menghindarinya menggunakan mysql_real_escape_string . Perhatikan bahwa menurut OWASP , fungsi ini tidak aman untuk menghindari nama tabel dinamis (tetapi ini jauh lebih jarang daripada penyisipan input pengguna "dasar").
Saya menyarankan Anda untuk melihat seluruh artikel OWASP tentang injeksi SQL , dan juga untuk menelusuri situs web lainnya. Ini adalah sumber informasi yang bagus tentang keamanan dalam aplikasi web.
IMO, cara yang lebih disukai untuk mencegah injeksi SQL adalah dengan menggunakan pernyataan yang disiapkan .
Harap diingat bahwa jika Anda memilih untuk menggunakan mysql_real_escape_string()
itu hanya berfungsi ketika digunakan di dalam string yang dibatasi oleh tanda kutip. Jangan pernah menggunakannya pada nilai yang tidak dikutip. Ini termasuk nilai numerik; sebagai gantinya, validasikan bahwa input pengguna sebenarnya numerik.