Rumah >pangkalan data >tutorial mysql >Adakah addslashes() dalam PHP Benar-benar Selamat Terhadap SQL Injection, Terutamanya dengan Aksara Multibait?
PHP addslashes()
dan Suntikan SQL: Analisis Kerentanan Karakter Berbilangbait
Walaupun mysql_real_escape_string
ialah kaedah pilihan untuk mendapatkan input pengguna dalam pertanyaan SQL PHP, memahami batasan addslashes()
adalah penting. Fungsi ini, dalam keadaan tertentu, boleh menyebabkan aplikasi anda terdedah kepada serangan suntikan SQL.
addslashes()
Kelemahan
Kelemahan utama addslashes()
berpunca daripada pengendalian aksara berbilangbait yang tidak mencukupi. Apabila petikan tunggal atau berganda berada dalam jujukan aksara berbilangbait, addslashes()
mendahului petikan dengan garis serong ke belakang. Walau bagaimanapun, jika garis miring ke belakang ini disepadukan ke dalam aksara berbilang bait yang sah, fungsi pelariannya akan terjejas.
Ini membolehkan penyerang membina input berniat jahat yang mengandungi aksara berbilangbait yang menggabungkan garis serong ke belakang diikuti dengan petikan. Ini dengan bijak memintas mekanisme melarikan diri yang dimaksudkan, membolehkan petikan berfungsi sebagai titik permulaan bagi arahan suntikan SQL.
Strategi Mitigasi Berkesan
Untuk mencegah kerentanan ini dengan berkesan, elakkan sepenuhnya menggunakan addslashes()
untuk membersihkan input pengguna yang ditujukan untuk pertanyaan SQL. Sebaliknya, gunakan mysql_real_escape_string
secara konsisten (atau pernyataan yang disediakan bersamaan untuk keselamatan yang lebih baik), yang direka khusus untuk mengurus aksara berbilang bait dan meneutralkan ancaman suntikan SQL dengan berkesan.
Pengambilan Utama
addslashes()
ialah fungsi yang tidak digunakan untuk pembersihan input. Menyedari kelemahannya adalah penting untuk membina aplikasi PHP yang selamat. Dengan menggunakan alternatif yang lebih selamat seperti mysql_real_escape_string
dan, sebaik-baiknya, kenyataan yang disediakan, pembangun boleh mengurangkan risiko serangan suntikan SQL yang berjaya dengan ketara.
Atas ialah kandungan terperinci Adakah addslashes() dalam PHP Benar-benar Selamat Terhadap SQL Injection, Terutamanya dengan Aksara Multibait?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!