Dalam bidang keselamatan web, melindungi daripada suntikan SQL adalah yang paling penting. Satu pendekatan yang biasa digunakan ialah penggunaan mysql_real_escape_string() untuk membersihkan input pengguna. Walau bagaimanapun, perdebatan telah timbul mengenai keberkesanan sepenuhnya.
Kebimbangan telah dibangkitkan bahawa mysql_real_escape_string() mungkin tidak melindungi sepenuhnya daripada suntikan SQL apabila digunakan dengan pengekodan aksara tertentu, seperti BIG5 atau GBK. Premis ini terletak pada kemungkinan aksara bait tunggal digabungkan dengan aksara berbilang bait, membenarkan pintasan mekanisme melarikan diri yang dimaksudkan.
Pendapat pakar mencadangkan bahawa mysql_real_escape_string() sememangnya mempunyai had apabila SET NAMES digunakan untuk menukar pengekodan aksara. Ini kerana mysql_real_escape_string() beroperasi secara bebas daripada perubahan pengekodan, yang berpotensi membawa kepada pelarian yang salah.
Satu alternatif untuk mengurus pengekodan aksara ialah mysql_set_charset, yang diperkenalkan dalam versi PHP yang lebih baharu. Kaedah ini menyediakan pendekatan yang lebih selamat untuk mengubah set aksara.
Walaupun mysql_real_escape_string() kekal sebagai alat yang digunakan secara meluas untuk pencegahan suntikan SQL, adalah penting untuk mengetahui potensi kelemahannya. Dalam kes di mana kenyataan yang disediakan bukan pilihan, penggunaan mysql_real_escape_string() harus dilengkapkan dengan langkah keselamatan tambahan, seperti 严格输入验证 dan amalan pengurusan pengguna yang betul.
Atas ialah kandungan terperinci Adakah mysql_real_escape_string() Benar-benar Berkesan Melawan Kerentanan Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!