Rumah >pangkalan data >tutorial mysql >Adakah `mysql_real_escape_string()` Menawarkan Perlindungan Suntikan SQL yang Lengkap?
Adakah mysql_real_escape_string() Menyediakan Perlindungan Lengkap Terhadap Suntikan SQL?
Tuntutan terbaharu diedarkan dalam talian bahawa pengekodan aksara Asia tertentu boleh memintas mysql_real(string) berpotensi memintas langkah perlindungannya terhadap suntikan SQL serangan. Untuk menangani kebimbangan ini, artikel ini menyelidiki kebenaran dakwaan ini dan meneroka strategi perlindungan alternatif.
Adakah Memintas mysql_real_escape_string() Mungkin?
Stefan Esser, seorang yang terkenal pakar keselamatan, mengesahkan bahawa keberkesanan mysql_real_escape_string() boleh dikompromi apabila menggunakan SET NAMES, arahan yang mengubah suai set aksara semasa. Ini berlaku kerana mysql_real_escape_string() masih tidak menyedari perubahan pengekodan. Akibatnya, ia gagal melepaskan aksara dengan sewajarnya apabila ia muncul sebagai bait kedua, ketiga atau seterusnya dalam pengekodan berbilang bait. Walaupun UTF-8 kekal tahan terhadap kerentanan ini, pengekodan berbilang bait lain mungkin menawarkan pelakon berniat jahat cara untuk mengeksploitasinya.
Mengurangkan Risiko
Untuk melindungi tapak web anda terhadap potensi kelemahan ini, pertimbangkan untuk melaksanakan langkah perlindungan alternatif, seperti sebagai:
Kesimpulan
Walaupun mysql_real_escape_string() kekal sebagai alat yang berguna untuk melindungi daripada suntikan SQL , ia mungkin tidak melindungi sepenuhnya daripada skim pengekodan aksara tertentu. Melaksanakan langkah perlindungan tambahan, seperti pernyataan yang disediakan, adalah penting untuk mengekalkan integriti aplikasi web anda.
Atas ialah kandungan terperinci Adakah `mysql_real_escape_string()` Menawarkan Perlindungan Suntikan SQL yang Lengkap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!