dalam situasi tertentu,
suntikan sql mysql_real_escape_string()
Walaupun
mysql_real_escape_string()
Analisis kelemahan
Dalam beberapa senario, penyerang boleh menggunakan kecacatan , yang dipilih untuk menyokong set aksara aksara ASCII pada masa yang sama (seperti GBK, SJKS).
Penyerang boleh membina beban yang berkesan yang mengandungi urutan multi -saksikan yang tidak sah (mis., Sebagai contoh, xbfx27). Oleh itu, apabila memasukkannya ke dalam pertanyaan, SQL disuntik. mysql_real_escape_string()
mysql_real_escape_string()
Jika penyerang menetapkan nilai
ke, mereka boleh memintas perlindungan
dan mengambil semua baris dalam jadual.<code class="language-php">$login = mysql_real_escape_string($_POST['login']); $password = mysql_real_escape_string($_POST['password']); $sql = "SELECT * FROM table WHERE login='$login' AND password='$password'";</code>
melegakan langkah $_POST['login']
\xbf\x27 OR 1=1 /*
mysql_real_escape_string()
Untuk mengurangkan kelemahan ini, pastikan:
Naik taraf ke versi MySQL yang lebih baru: versi MySQL yang lebih baru (misalnya, MySQL 5.1) mengandungi prosedur pembaikan untuk masalah khusus ini.
Gunakan set aksara selamat:
Gunakan set aksara tidak menyokong 'dan set aksara sebagai watak yang sah (contohnya, UTF8, Latin1).Atas ialah kandungan terperinci Bolehkah SQL Injection Bypass `mysql_real_escape_string()` Di Bawah Syarat Set Aksara Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!