Adakah mysql_real_escape_string() Perisai Kekal Terhadap Suntikan SQL?
Bahagian di justinshattuck.com mencadangkan bahawa mysql_real_escape_string tertentu() Pengekodan aksara Asia. Secara khusus, ia mendakwa bahawa pengekodan memintas mysql_real_escape_string() menggunakan BIG5 atau GBK untuk menyeludup aksara berbahaya ke dalam pertanyaan.
Adakah Kerentanan Ini Nyata?
Menurut Stefan Esser, jawapannya adalah ya yang membingungkan. Dia mendakwa bahawa mysql_real_escape_string() goyah apabila SET NAMES digunakan. Kaedah ini menukar pengekodan untuk memenuhi keperluan aplikasi tanpa memaklumkan mysql_real_escape_string(). Akibatnya, jika pengekodan berbilang bait membenarkan garis miring ke belakang sebagai bait kedua, ketiga atau keempat, masalah akan berlaku. Mysql_real_escape_string() tetap tidak menyedari ketidakteraturan ini dan gagal melepaskan aksara dengan betul.
Melindungi Tapak Web Anda
Esser mencadangkan bahawa UTF-8 kekal sebagai pengekodan yang selamat, tetapi UTF -8 tidak selalu menjadi pilihan. Malangnya, mysql_set_charset, alternatif yang lebih selamat, hanya tersedia dalam versi PHP terkini.
Atas ialah kandungan terperinci Adakah `mysql_real_escape_string()` adalah Pertahanan yang Boleh Dipercayai Terhadap Suntikan SQL dalam Semua Pengekodan Aksara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!