Rumah > pangkalan data > tutorial mysql > Bolehkah SQL Injection Bypass `mysql_real_escape_string()` Di Bawah Syarat Set Aksara Tertentu?

Bolehkah SQL Injection Bypass `mysql_real_escape_string()` Di Bawah Syarat Set Aksara Tertentu?

Susan Sarandon
Lepaskan: 2025-01-25 21:31:10
asal
633 orang telah melayarinya

Can SQL Injection Bypass `mysql_real_escape_string()` Under Specific Character Set Conditions?

dalam situasi tertentu,

suntikan sql mysql_real_escape_string() Walaupun

boleh menghapuskan kelemahan suntikan SQL, dalam beberapa kes khas, ia mungkin masih dilangkau.

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()

Contoh

mysql_real_escape_string()

Pertimbangkan kod PHP berikut:

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>
Salin selepas log masuk

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).
  • Lumpuhkan pernyataan pra -proses simulasi dalam PDO: pdo :: atmulating_prepares ditetapkan kepada palsu untuk memaksa penggunaan ayat pra -proses sebenar.
  • betul tetapkan set aksara:
  • Gunakan parameter set aksara atau PDO DSN untuk menetapkan set aksara sambungan pangkalan data.
  • Gunakan mod SQL 'no_backslash_escapes' (berhati -hati):
  • Mod SQL ini dapat menghalang penciptaan aksara yang berkesan dalam proses putaran, dengan itu mengurangkan kelemahan khusus ini. Walau bagaimanapun, sila perhatikan kesan sampingan yang berpotensi.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan