Adakah "mysqli_real_escape_string" Mengurangkan Serangan Suntikan SQL dengan Berkesan?
Walaupun penggunaannya meluas, fungsi "mysqli_real_escape_string" sahaja tidak mencukupi terhadap suntikan SQL kelemahan.
Penghadan "mysqli_real_escape_string"
"mysqli_real_escape_string" bertujuan untuk melepaskan aksara khas yang sebaliknya boleh dieksploitasi untuk memanipulasi pertanyaan SQL yang dimaksudkan. Walau bagaimanapun, pergantungannya pada padanan corak hanya meliputi set aksara yang terhad, memberi ruang kepada penyerang untuk menyuntik kod hasad melalui kaedah alternatif.
Keunggulan Penyata Disediakan
Untuk mencegah suntikan SQL dengan berkesan, sangat disyorkan untuk menggunakan pernyataan yang disediakan. Penyataan yang disediakan mengasingkan data (parameter) daripada rentetan pertanyaan sebenar, menghalang sebarang kemungkinan pencemaran. Pemisahan ini secara berkesan menghapuskan ancaman suntikan SQL, walaupun dalam pertanyaan yang rumit.
Langkah Keselamatan Tambahan
Dalam keadaan di mana kenyataan yang disediakan tidak boleh dilaksanakan, senarai putih yang ketat boleh dilaksanakan untuk mengehadkan input kepada nilai selamat yang telah ditetapkan. Pendekatan ini memastikan bahawa hanya data yang diluluskan digunakan dalam pertanyaan SQL, meminimumkan risiko suntikan berniat jahat.
Contoh Pelaksanaan
Pertimbangkan coretan kod berikut menggunakan pernyataan yang disediakan untuk perlindungan terhadap suntikan SQL:
$query = $db->prepare("INSERT INTO `users` (`email`,`psw`) VALUES (?, ?)"); $query->execute([$email, $psw]);
Dalam contoh ini, data (e-mel dan psw) dihantar sebagai parameter kepada pernyataan yang disediakan, memastikan bahawa sebarang watak berniat jahat yang berpotensi dinetralkan dengan berkesan.
Oleh itu, walaupun "mysqli_real_escape_string" menawarkan beberapa perlindungan, penggunaan pernyataan yang disediakan dan/atau senarai putih yang ketat kekal sebagai penyelesaian yang paling boleh dipercayai dan selamat terhadap serangan suntikan SQL.
Atas ialah kandungan terperinci Adakah `mysqli_real_escape_string` Memberi Perlindungan Mencukupi Terhadap Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!