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
244 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!

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