Apakah Keupayaan mysql_real_escape_string() Yang Melebihi Addslashes()?
Dalam pembangunan web, berfungsi seperti mysql_real_escape_string() dan addslashes() memainkan peranan penting dalam melindungi aplikasi daripada serangan suntikan SQL. Walau bagaimanapun, memahami nuansa antara fungsi ini adalah penting untuk memastikan keselamatan yang optimum.
Peranan Fungsi Khusus DB
Walaupun mungkin terdapat pilihan alternatif seperti pertanyaan berparameter, fungsi khusus pangkalan data seperti mysql_real_escape_string() menawarkan kelebihan khusus:
Keupayaan mysql_real_escape_string()
mysql_real_escape_string() meningkatkan addslashes() dengan menambahkan garis miring pada aksara tambahan, termasuk:
x00Walaupun fungsinya, aplikasi web yang bergantung semata-mata pada addslashes() kekal terdedah kepada serangan suntikan SQL Ini kerana addslashes() tidak terlepas dari semua aksara yang berpotensi dieksploitasi, terutamanya petikan dua kali (").
Sebagai contoh, pertimbangkan pertanyaan berikut:
Penyerang boleh memintas perlindungan addslashes() dengan memasukkan nama pengguna seperti " OR 1 = 1. Ini akan menghasilkan pertanyaan berikut:SELECT * FROM users WHERE username = '" . addslashes($_POST['username']) . "';
SELECT * FROM users WHERE username = "" OR 1 = 1";
Walaupun addslashes() menawarkan perlindungan asas terhadap suntikan SQL, mysql_real_escape_string() menyediakan pertahanan yang lebih teguh dengan melarikan diri daripada rangkaian yang lebih luas. aksara khusus untuk MySQL. Oleh itu, untuk keselamatan maksimum, pembangun web harus mengutamakan penggunaan fungsi khusus pangkalan data seperti mysql_real_escape_string() atau mempertimbangkan untuk menggunakan pertanyaan berparameter untuk menghapuskan sebarang kelemahan yang berkaitan dengan pengendalian input.
Atas ialah kandungan terperinci Apakah Keupayaan Melarikan Diri Tambahan yang Diberikan oleh mysql_real_escape_string() Over addslashes()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!