Menyanggah Kepincangan yang Didakwa: Meneroka Kebolehpercayaan mysql_real_escape_string()
Walaupun terdapat dakwaan bahawa mysql_real_escape_string() menunjukkan kekurangannya, bukti robus menunjukkan kekurangannya. perlindungan terhadap kelemahan suntikan SQL apabila digunakan dengan sewajarnya.
Pemeriksaan terhadap apa yang dipanggil kelemahan mendedahkan bahawa ia biasanya berpunca daripada penggunaan yang tidak betul atau maklumat lapuk. Seperti yang dinyatakan oleh dokumentasi MySQL C API secara eksplisit, adalah penting untuk menetapkan set aksara menggunakan mysql_set_character_set() dan bukannya SET NAMES atau SET CHARACTER SET penyataan. Pilihan terakhir tidak menjejaskan set aksara yang digunakan oleh mysql_real_escape_string().
mysql_set_charset() PHP berfungsi sebagai rakan sejawat kepada mysql_set_character_set() MySQL. Dengan menggunakannya untuk mengubah suai pengekodan, pembangun boleh memastikan keserasian dan mengelakkan isu yang berpotensi.
Contoh Kod:
<?php $mysqli = new mysqli('host', 'user', 'password', 'database'); $mysqli->set_charset('utf8mb4'); // Set utf8mb4 encoding // Example usage of mysql_real_escape_string() $escaped_string = mysql_real_escape_string($mysqli->connect_errno, $_POST['username']);
Pendekatan ini menetapkan set aksara secara berkesan dan melepaskan input pengguna dengan betul menggunakan mysql_real_escape_string( ), mengurangkan risiko serangan suntikan SQL.
Atas ialah kandungan terperinci Adakah mysql_real_escape_string() Benar-benar Cacat, atau Hanya Disalahgunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!