Rumah > pangkalan data > tutorial mysql > Adakah addslashes() dalam PHP Benar-benar Selamat Terhadap Suntikan SQL, Walaupun dengan Aksara Multibait?

Adakah addslashes() dalam PHP Benar-benar Selamat Terhadap Suntikan SQL, Walaupun dengan Aksara Multibait?

Linda Hamilton
Lepaskan: 2025-01-15 19:37:44
asal
506 orang telah melayarinya

Is addslashes() in PHP Truly Safe Against SQL Injection, Even with Multibyte Characters?

PHP addslashes() dan Kerentanan Suntikan SQLnya

Fungsi PHP addslashes(), sering digunakan sebagai perlindungan terhadap serangan suntikan SQL, mempunyai had yang boleh menjejaskan keselamatan, terutamanya apabila berurusan dengan aksara berbilangbait. Artikel ini mengkaji senario di mana addslashes() gagal memberikan perlindungan yang mencukupi.

Isu Pengekodan Aksara Berbilangbait

Apabila data input termasuk aksara berbilangbait, addslashes() boleh memasukkan garis miring ke belakang secara salah, mengganggu urutan melarikan diri dan mewujudkan kelemahan. Ini berlaku kerana addslashes() mungkin tidak mengendalikan pengekodan aksara berbilangbait dengan tepat.

Contoh Ilustrasi:

<code class="language-php">$input = "⭐' OR 1=1 --";
$escapedInput = addslashes($input); // Escapes as ⭐\' OR 1=1 --</code>
Salin selepas log masuk

Di sini, petikan tunggal berikutan watak bintang berbilangbait kekal tidak dapat dielakkan, menjadikan sistem terbuka kepada suntikan SQL.

Kerentanan Khusus Pengekodan

Masalahnya berpunca daripada potensi ketidakupayaan addslashes() untuk mentafsir pengekodan aksara berbilangbait dengan betul seperti EUC-JP atau Shift-JIS. Urutan aksara tertentu dalam pengekodan ini mungkin mengandungi bait 0x5c mengekori, mengelirukan addslashes() untuk mencipta aksara berbilangbait dan bukannya melarikan petikan tunggal.

Amalan Terbaik: Melangkaui addslashes()

Walaupun addslashes() menawarkan beberapa perlindungan asas, ia bukan penyelesaian yang boleh dipercayai untuk mencegah suntikan SQL, terutamanya dengan set aksara berbilangbait. Untuk keselamatan yang teguh, gunakan teknik yang lebih maju seperti mysqli_real_escape_string() (untuk MySQLi) atau, sebaik-baiknya, pernyataan yang disediakan. Penyataan yang disediakan ialah pendekatan yang disyorkan untuk mencegah kelemahan suntikan SQL.

Atas ialah kandungan terperinci Adakah addslashes() dalam PHP Benar-benar Selamat Terhadap Suntikan SQL, Walaupun dengan Aksara Multibait?. 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