Dalam membangunkan aplikasi web, mencegah serangan suntikan SQL adalah penting. Walaupun addslashes() ialah fungsi yang biasa digunakan untuk melarikan diri aksara, ia gagal dalam senario tertentu. Fungsi mysql_real_escape_string() menangani pengehadan ini secara khusus, meningkatkan perlindungan suntikan SQL.
mysql_real_escape_string() melarikan diri daripada julat aksara yang lebih luas (x00, n, "r, , ' , dan x1a) berbanding addslashes() yang hanya melepaskan tiga aksara (', dan NUL) Liputan komprehensif ini memastikan bahawa aksara yang berpotensi dieksploitasi untuk suntikan SQL dilepaskan dengan betul, meminimumkan kelemahan.
Walaupun menggunakan addslashes(), apl web kekal terdedah kepada suntikan SQL jika ia bergantung sepenuhnya pada fungsi ini untuk melarikan diri aksara Satu senario di mana addslashes() gagal ialah apabila input hasad mengandungi petikan berganda ("). Petikan ini boleh menamatkan rentetan yang telah dipetik, membenarkan penyerang menyuntik pernyataan SQL sewenang-wenangnya.
Contohnya:
<code class="php">$username = addslashes($_POST['username']); $sql = "SELECT * FROM users WHERE username='$username'";</code>
Jika input pengguna ialah "John' OR 1='1" , addslashes() hanya akan melepaskan petikan tunggal ('), menghasilkan pernyataan SQL berikut:
<code class="sql">SELECT * FROM users WHERE username='John\' OR 1=\'1\'</code>
Petikan berganda (") tidak terlepas, membenarkan penyerang menamatkan rentetan yang disebut dan menambah Logik SQL tambahan. Akibatnya, pertanyaan akan mengembalikan semua pengguna dan bukannya John, yang berpotensi menjejaskan maklumat sensitif.
Sementara addslashes() menyediakan pelarian aksara asas untuk perlindungan suntikan SQL, ia tidak mencukupi untuk menghapuskan sepenuhnya kelemahan mysql_real_escape_string() mengatasi had ini dengan melarikan diri daripada julat aksara yang lebih luas, menangani senario di mana addslashes() gagal Dengan menggunakan mysql_real_escape_string() atau menggunakan pertanyaan berparameter sebagai alternatif yang unggul, pembangun web boleh meningkatkan dengan ketara. keselamatan aplikasi mereka terhadap serangan suntikan SQL.
Atas ialah kandungan terperinci mysql_real_escape_string() vs. addslashes(): Fungsi Melarikan Diri Yang Mana Menyediakan Perlindungan Suntikan SQL yang Lebih Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!