Rumah > pangkalan data > tutorial mysql > Adakah `mysqli_real_escape_string` Cukup untuk Mencegah Serangan Suntikan SQL?

Adakah `mysqli_real_escape_string` Cukup untuk Mencegah Serangan Suntikan SQL?

Linda Hamilton
Lepaskan: 2024-12-20 00:41:12
asal
306 orang telah melayarinya

Is `mysqli_real_escape_string` Enough to Prevent SQL Injection Attacks?

Adakah "mysqli_real_escape_string" Mencukupi untuk Mencegah Serangan SQL?

Kod yang disediakan menggunakan mysqli_real_escape_string untuk melindungi daripada suntikan SQL. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa fungsi ini sahaja tidak mencukupi untuk perlindungan lengkap.

Kerentanan kepada SQL Injection

Walaupun menggunakan mysqli_real_escape_string, kod tersebut tetap terdedah kepada serangan suntikan SQL . Ini kerana ia menggunakan penggabungan rentetan untuk memasang pertanyaan SQL, yang membolehkan penyerang memanipulasi pertanyaan dengan menyuntik kod hasad melalui input borang.

Penyelesaian Disyorkan: Penyata Disediakan

Kaedah paling berkesan untuk mencegah suntikan SQL adalah melalui kenyataan yang disediakan. Mereka memisahkan parameter data daripada arahan pertanyaan, menghapuskan kemungkinan pencemaran. Berikut ialah contoh:

$stmt = $db_con->prepare("INSERT INTO `users` (`email`, `psw`) VALUES (?, ?)");
$stmt->bind_param("ss", $email, $psw);
$stmt->execute();
Salin selepas log masuk

Langkah Keselamatan Tambahan

Dalam kes di mana kenyataan yang disediakan tidak dapat dilaksanakan, pertimbangkan:

  • Pengesahan Senarai Putih: Hadkan input pengguna kepada set pratakrif dibenarkan nilai.
  • Jenis Penghantaran: Pastikan nilai ditukar dengan betul kepada jenis yang dimaksudkan, menghalang pelaksanaan kod berniat jahat.
  • Lumpuhkan Penyata Disediakan Ditiru: Jika menggunakan MySQL, tetapkan $db_con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); untuk meningkatkan keselamatan.

Dengan melaksanakan langkah-langkah ini, anda boleh meningkatkan keselamatan aplikasi anda dengan ketara terhadap suntikan SQL dan serangan SQL yang lain.

Atas ialah kandungan terperinci Adakah `mysqli_real_escape_string` Cukup untuk Mencegah Serangan Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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