Rumah > pangkalan data > tutorial mysql > Adakah mysql_real_escape_string Benar-benar Berkesan Melawan Suntikan SQL, dan Apakah Hadnya?

Adakah mysql_real_escape_string Benar-benar Berkesan Melawan Suntikan SQL, dan Apakah Hadnya?

Barbara Streisand
Lepaskan: 2024-11-29 00:19:10
asal
465 orang telah melayarinya

Is mysql_real_escape_string Truly Effective Against SQL Injection, and What Are Its Limitations?

mysql_real_escape_string: Potensi Perangkap

Fungsi mysql_real_escape_string, bertujuan untuk melindungi daripada serangan suntikan SQL, telah diteliti untuk hadnya. Walaupun ia boleh meningkatkan keselamatan, kelemahan tertentu menghalang keberkesanannya.

Penggunaan Salah dan Nilai Angka

Satu isu utama ialah penggunaan mysql_real_escape_string yang salah. Ia direka bentuk semata-mata untuk melepaskan nilai rentetan dalam pertanyaan SQL. Walau bagaimanapun, jika digunakan pada nilai berangka, seperti dalam contoh:

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

ia gagal menghalang serangan seperti:

5 OR 1=1
Salin selepas log masuk

Sisipan Rentetan Tidak Dipetik

Satu lagi kelemahan timbul apabila mysql_real_escape_string digunakan dalam perkara berikut senario:

$sql = "... `foo` = $value ...";
Salin selepas log masuk

Di sini, input dimasukkan tanpa melarikan diri dan petikan yang betul, membenarkan serangan suntikan SQL. Begitu juga, jika digunakan pada pembolehubah, seperti:

$sql = "... `$value` ...";
Salin selepas log masuk

kelemahan berterusan.

Konflik Pengekodan Sambungan Pangkalan Data

Selain itu, ketidakkonsistenan antara pengekodan ditetapkan dalam mysql_ API dan pangkalan data boleh mencipta kelemahan. Menetapkan pengekodan pangkalan data menggunakan kaedah yang salah, seperti:

mysql_query("SET NAMES 'utf8'", $link);
Salin selepas log masuk

boleh menyebabkan ketidakpadanan dalam rentetan melarikan diri, yang membawa kepada kemungkinan serangan suntikan.

Kesimpulan

Walaupun mysql_real_escape_string boleh memberikan sedikit perlindungan terhadap serangan suntikan SQL, kes penggunaannya yang sempit dan kerentanan terhadap aplikasi yang salah menjadikannya pilihan yang kurang diingini. Untuk keselamatan yang lebih teguh, pembangun digalakkan untuk meneroka kaedah alternatif, seperti pernyataan yang disediakan, yang menawarkan perlindungan yang lebih besar terhadap kelemahan.

Atas ialah kandungan terperinci Adakah mysql_real_escape_string Benar-benar Berkesan Melawan Suntikan SQL, dan Apakah Hadnya?. 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