Rumah > pangkalan data > tutorial mysql > Adakah mysql_real_escape_string Mencukupi untuk Mencegah Suntikan SQL?

Adakah mysql_real_escape_string Mencukupi untuk Mencegah Suntikan SQL?

Mary-Kate Olsen
Lepaskan: 2024-11-28 22:48:12
asal
269 orang telah melayarinya

Is mysql_real_escape_string Sufficient to Prevent SQL Injection?

mysql_real_escape_string: Had dan Penggunaan

Pengenalan

Manakala mysql_real_escape melindungi daripada Suntikan SQL, ia mempunyai batasan tertentu yang boleh meninggalkan aplikasi terdedah.

Penggunaan dan Had yang Betul

mysql_real_escape_string bertujuan untuk melepaskan kandungan teks yang digunakan sebagai nilai dalam petikan dalam pernyataan SQL. Penggunaannya secara tidak betul, seperti dalam nilai tidak disebut harga atau keseluruhan pernyataan SQL, boleh membawa kepada risiko suntikan.

Nilai Tidak Sah atau Tidak Boleh Dielak

Nilai angka dan input tidak disebut tidak boleh berkesan melarikan diri menggunakan mysql_real_escape_string. Untuk nilai berangka, penghantaran kepada jenis yang sesuai adalah disyorkan, manakala input yang tidak disebut harus dikendalikan sebagai rentetan dalam pertanyaan.

Contoh Penggunaan Yang Salah

mysql_query('DELETE FROM users WHERE user_id = '.mysql_real_escape_string($input));
Salin selepas log masuk

Ini contoh tidak melindungi daripada suntikan SQL jika input termasuk "5 ATAU 1=1". Ia menganggap input sebagai nilai berangka apabila melarikan diri, walaupun pertanyaan menjangkakan rentetan. Pengendalian yang betul melibatkan pembalut input yang terlepas dalam petikan.

Kerentanan Halus

Satu lagi isu berpotensi timbul apabila menggunakan mysql_query("SET NAMES 'utf8'", $link) ke tetapkan pengekodan sambungan pangkalan data dan bukannya mysql_set_charset('utf8', $link). Ini mewujudkan ketidakpadanan antara pengekodan yang diandaikan oleh API pelanggan dan tafsiran pangkalan data, yang berpotensi membawa kepada kelemahan suntikan dengan rentetan berbilangbait.

Kesimpulan

mysql_real_escape_string mempunyai batasan asas, terutamanya dalam memastikan penggunaan yang betul. Adalah penting untuk memahami tujuan yang dimaksudkan dan mengelakkan penggunaannya secara salah. Pertimbangkan untuk menggunakan kaedah alternatif dan lebih selamat seperti pernyataan yang disediakan untuk perlindungan yang lebih baik terhadap suntikan SQL.

Atas ialah kandungan terperinci Adakah mysql_real_escape_string Mencukupi untuk Mencegah 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