Rumah >pangkalan data >tutorial mysql >Adakah `mysql_real_escape_string()` Benar-benar Selamat Terhadap Suntikan SQL?
Mengatasi Kelemahan mysql_real_escape_string()
Walaupun penggunaannya meluas dalam aplikasi PHP, sesetengah pihak telah menimbulkan kebimbangan mengenai kelemahan keselamatan mysql_string(real_escape) ). Fungsi ini direka bentuk untuk menghalang serangan suntikan SQL dengan melepaskan aksara khas dalam input pengguna.
Adakah mysql_real_escape_string() Sama sekali Tidak Mencukupi?
Dokumentasi MySQL C API mengakui potensi isu dengan mysql_real_escape_string(). Ia mencadangkan untuk mengelakkan penggunaan penyataan SET NAMES/SET CHARACTER SET untuk menukar set aksara sambungan. Sebaliknya, fungsi mysql_set_character_set() hendaklah dipanggil sebelum menggunakan mysql_real_escape_string().
Kod Bukti
Fungsi PHP mysql_set_charset() mengubah suai set aksara yang digunakan oleh mysql_real (). Ini digambarkan dalam coretan kod berikut:
<?php // Connect to MySQL and select the database $link = mysqli_connect("localhost", "user", "password", "database"); // Set the character set for the connection mysql_set_charset($link, "utf8"); // Escape the input using mysql_real_escape_string() $escaped_input = mysql_real_escape_string($link, $input); // Use the escaped input in a SQL query $query = "SELECT * FROM table WHERE field = '$escaped_input'";
Dengan mengikuti pendekatan ini, set aksara yang digunakan oleh mysql_real_escape_string() boleh ditetapkan secara eksplisit, memastikan aksara khas dilepaskan dengan betul.
Atas ialah kandungan terperinci Adakah `mysql_real_escape_string()` Benar-benar Selamat Terhadap Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!