Rumah > pangkalan data > tutorial mysql > Adakah `addslashes()` Benar-benar Melindungi Terhadap SQL Injection, dan Mengapa Anda Perlu Menggunakan `mysql_real_escape_string()` Sebaliknya?

Adakah `addslashes()` Benar-benar Melindungi Terhadap SQL Injection, dan Mengapa Anda Perlu Menggunakan `mysql_real_escape_string()` Sebaliknya?

Mary-Kate Olsen
Lepaskan: 2025-01-15 19:34:17
asal
251 orang telah melayarinya

Does `addslashes()` Really Protect Against SQL Injection, and Why Should You Use `mysql_real_escape_string()` Instead?

addslashes() lwn. mysql_real_escape_string() dalam Mencegah Suntikan SQL

Walaupun sering disebut-sebut sebagai alternatif yang lebih selamat kepada addslashes(), mysql_real_escape_string() kekal sebagai kaedah yang disyorkan untuk mencegah kelemahan suntikan SQL dalam aplikasi PHP. Memahami batasan addslashes() adalah kunci untuk membina keselamatan yang teguh.

Pertimbangkan ini: pertanyaan SQL, bergantung pada addslashes() untuk pembersihan input pengguna, menemui rentetan yang mengandungi petikan tunggal ('). addslashes() mungkin tersilap mengenal pasti petikan ini sebagai sebahagian daripada aksara berbilangbait, menyebabkan pertanyaan itu terdedah kepada suntikan.

Penyerang boleh mengeksploitasi ini dengan menambahkan tanda sempang (-) atau aksara serupa yang menamatkan jujukan berbilang bait dalam pengekodan Unicode tertentu (seperti ISO-8859-1, tetapi bukan UTF-8). Ini memperdaya addslashes() untuk menganggap petikan tunggal sebagai sebahagian daripada aksara berbilang bait yang sah, memintas mekanisme melarikan diri dan membenarkan pelaksanaan kod berniat jahat.

Kerentanan adalah khusus pengekodan. UTF-8, pengekodan Unicode yang digunakan secara meluas, secara amnya selamat daripada serangan khusus ini kerana ia tidak menggunakan aksara penamatan berbilangbait yang sama.

Untuk perlindungan suntikan SQL yang optimum, sentiasa utamakan mysql_real_escape_string() daripada addslashes(). Tambah ini dengan pengesahan input peringkat aplikasi dan penggunaan pernyataan yang disediakan untuk interaksi pangkalan data. Dengan mengakui kelemahan addslashes() dan melaksanakan amalan terbaik ini, pembangun boleh mengurangkan risiko serangan suntikan SQL dengan ketara.

Atas ialah kandungan terperinci Adakah `addslashes()` Benar-benar Melindungi Terhadap SQL Injection, dan Mengapa Anda Perlu Menggunakan `mysql_real_escape_string()` Sebaliknya?. 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