Pertama, ini tentang apa yang disebut SQL-Injection . Ini pada dasarnya hanya kemungkinan untuk mengubah kueri terhadap database melalui input pengguna.
Mari kita lihat contohnya:
Pertanyaan:
SELECT temp1 FROM temp WHERE temp2 = 'VAR1';
Sekarang kita akan menetapkan VAR1 nilai:'; DROP TABLE *; --
Dan kita akan mendapatkan:
SELECT temp1 FROM temp WHERE temp2 = ''; DROP TABLE *; --';
Dengan mysql_real_escape_string
akan terlihat seperti ini:
SELECT temp1 FROM temp WHERE temp2 = '\'; DROP TABLE *; --'
mysql_real_escape_string
'mengamankan' string untuk digunakan dalam kueri.
Tetapi pada akhirnya, Anda harus berhenti menggunakan mysql_*
sama sekali . Mereka tidak digunakan lagi dan dianggap tidak aman dalam hal mencegah injeksi SQL atau cara lain untuk meredam kueri.
Anda sebaiknya berhenti menggabungkan kueri seperti ini dan mulai gunakan pernyataan yang sudah disiapkan , yang tidak hanya lebih mudah digunakan, mencegah SQL Injection secara default tetapi juga dapat meningkatkan kecepatan aplikasi Anda.
Untuk PHP ada dua ekstensi yang dirancang untuk menutup seluruh mysql_*
dibuka:
Dan saya katakan lagi:Tolong berhenti menggunakan mysql_*
!