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
Lepaskan: 2024-12-20 03:02:13
asal
677 orang telah melayarinya

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 . "')";
Salin selepas log masuk

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);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan