Rumah > pangkalan data > tutorial mysql > Bolehkah suntikan SQL masih berlaku walaupun dengan `mysql_real_escape_string ()`?

Bolehkah suntikan SQL masih berlaku walaupun dengan `mysql_real_escape_string ()`?

DDD
Lepaskan: 2025-01-25 21:18:11
asal
547 orang telah melayarinya

Can SQL Injection Still Occur Even with `mysql_real_escape_string()`?

Walaupun anda menggunakan mysql_real_escape_string (), suntikan SQL masih boleh berlaku

Walaupun biasanya dipercayai bahawa mysql_real_escape_string () boleh mencegah suntikan SQL, dalam kes -kes tertentu, suntikan SQL mungkin masih berlaku. Berikut ini menerangkan bagaimana serangan ini berlaku:

    Pemilihan set aksara:
  1. Tetapkan set aksara pelayan untuk membolehkan cerun belakang ASCII (0x5c) dan set aksara watak multi -garis yang tidak sah (contohnya, GBK). Ini boleh dilaksanakan melalui pernyataan Nama Set.

    • Pembinaan Beban Berkesan:
  2. Buat beban yang berkesan bermula dengan 0xbf27. Dalam set aksara yang ditentukan (contohnya, GBK), ini bermakna watak multi -garis yang tidak sah yang akan ditukar kepada 0x27 (skimp) dalam Latin1.

    • mysql_real_escape_string () Operasi:
  3. mysql_real_escape_string () berdasarkan operasi aksara yang disambungkan (GBK), dan bukannya set aksara faked pelanggan (LATIN1).

    Ia akan berkesan untuk menjadi sah kepada 0x5c27. Walau bagaimanapun, kerana pelanggan masih percaya bahawa ia menggunakan Latin1, backslash (0x5c) masih tidak menguntungkan.

    • Pelaksanaan pertanyaan:
  4. Pertanyaan rendering mengandungi skimmer yang tidak bersedia dalam kandungan kebenaran, yang membawa kepada serangan suntikan yang berjaya.
  5. pdo dan mysqli kerentanan:
    Penggunaan lalai PDO dari pernyataan pra -proses analog, yang mudah diserang.
MySQLI tidak terjejas kerana ia menggunakan pernyataan pra -proses yang sebenar.

Melegakan langkah -langkah:

  • Gunakan set aksara bukan serangan untuk menyambungkan pengekodan (contohnya, UTF8).
  • Gunakan parameter set aksara mysql_set_charset () / pdo dsn dengan betul tetapkan set aksara sambungan.

Lumpuhkan penyataan pra -pemprosesan simulasi dalam PDO.

syarat -syarat berikut disahkan:
  • versi MySQL moden dengan pengurusan set aksara yang betul
  • atau gunakan set aksara yang tidak dapat ditukar
anda boleh mengurangkan kelemahan potensi ini.

Atas ialah kandungan terperinci Bolehkah suntikan SQL masih berlaku walaupun dengan `mysql_real_escape_string ()`?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan