Rumah >pembangunan bahagian belakang >tutorial php >Adakah `mysqli_real_escape_string` Menawarkan Perlindungan Lengkap Terhadap Suntikan SQL?

Adakah `mysqli_real_escape_string` Menawarkan Perlindungan Lengkap Terhadap Suntikan SQL?

Linda Hamilton
Linda Hamiltonasal
2024-12-20 03:02:13643semak imbas

Does `mysqli_real_escape_string` Offer Complete Protection Against SQL Injection?

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!

Kenyataan:
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