Rumah >pembangunan bahagian belakang >tutorial php >Adakah `mysqli_real_escape_string` Menawarkan Perlindungan Lengkap Terhadap Suntikan SQL?
Bolehkah "mysqli_real_escape_string" Mencegah Suntikan SQL Sepenuhnya?
Pertimbangkan kod contoh berikut:
$email = mysqli_real_escape_string($db_con, $_POST['email']); $psw = mysqli_real_escape_string($db_con, $_POST['psw']); $query = "INSERT INTO `users` (`email`,`psw`) VALUES ('" . $email . "','" . $psw . "')";
Adakah kod ini selamat terhadap suntikan SQL dan lain-lain serangan?
Jawapan: Tidak.
Seperti yang diserlahkan dalam contoh kod yang disediakan, "mysqli_real_escape_string" sahaja tidak mencukupi untuk menjamin perlindungan terhadap suntikan SQL . Penyerang boleh mengeksploitasi kelemahan dalam pelaksanaannya untuk memintas penapisan dan menjejaskan aplikasi.
Penyelesaian Disyorkan:
Cara paling berkesan untuk mencegah suntikan SQL adalah dengan menggunakan kenyataan yang disediakan. Penyataan yang disediakan mengasingkan data daripada pertanyaan SQL, memastikan tiada input luaran yang mengganggu struktur pertanyaan. Selain itu, pertimbangkan untuk melaksanakan senarai putih yang ketat untuk menapis data secara khusus untuk tujuan yang dimaksudkan. Pendekatan ini meminimumkan risiko suntikan SQL dan kelemahan keselamatan lain.
Contoh Pertanyaan Selamat Menggunakan Pernyataan yang Disediakan:
$stmt = $db->prepare( "SELECT * FROM table WHERE col = ? ORDER BY {$sortby} ASC LIMIT ?, ?" ); $stmt->execute(['value', $start, $howmany]); $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
Dengan menggabungkan langkah-langkah ini, anda boleh meningkatkan keselamatan operasi SQL anda dengan ketara terhadap serangan berniat jahat.
Atas ialah kandungan terperinci Adakah `mysqli_real_escape_string` Menawarkan Perlindungan Lengkap Terhadap Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!