mysql_real_escape_string() vs. addslashes(): Fungsi Melarikan Diri Yang Mana Menyediakan Perlindungan Suntikan SQL yang Lebih Baik?

Susan Sarandon
Lepaskan: 2024-10-21 13:02:02
asal
741 orang telah melayarinya

mysql_real_escape_string() vs. addslashes(): Which Escaping Function Provides Better SQL Injection Protection?

Memahami Perbezaan antara mysql_real_escape_string() dan addslashes() untuk Perlindungan Injeksi SQL

Dalam membangunkan aplikasi web, mencegah serangan suntikan SQL adalah penting. Walaupun addslashes() ialah fungsi yang biasa digunakan untuk melarikan diri aksara, ia gagal dalam senario tertentu. Fungsi mysql_real_escape_string() menangani pengehadan ini secara khusus, meningkatkan perlindungan suntikan SQL.

Perbezaan Melarikan Diri Aksara

mysql_real_escape_string() melarikan diri daripada julat aksara yang lebih luas (x00, n, "r, , ' , dan x1a) berbanding addslashes() yang hanya melepaskan tiga aksara (', dan NUL) Liputan komprehensif ini memastikan bahawa aksara yang berpotensi dieksploitasi untuk suntikan SQL dilepaskan dengan betul, meminimumkan kelemahan.

SQL Injection). Kerentanan dengan addslashes()

Walaupun menggunakan addslashes(), apl web kekal terdedah kepada suntikan SQL jika ia bergantung sepenuhnya pada fungsi ini untuk melarikan diri aksara Satu senario di mana addslashes() gagal ialah apabila input hasad mengandungi petikan berganda ("). Petikan ini boleh menamatkan rentetan yang telah dipetik, membenarkan penyerang menyuntik pernyataan SQL sewenang-wenangnya.

Contohnya:

<code class="php">$username = addslashes($_POST['username']);
$sql = "SELECT * FROM users WHERE username='$username'";</code>
Salin selepas log masuk

Jika input pengguna ialah "John' OR 1='1" , addslashes() hanya akan melepaskan petikan tunggal ('), menghasilkan pernyataan SQL berikut:

<code class="sql">SELECT * FROM users WHERE username='John\' OR 1=\'1\'</code>
Salin selepas log masuk

Petikan berganda (") tidak terlepas, membenarkan penyerang menamatkan rentetan yang disebut dan menambah Logik SQL tambahan. Akibatnya, pertanyaan akan mengembalikan semua pengguna dan bukannya John, yang berpotensi menjejaskan maklumat sensitif.

Kesimpulan

Sementara addslashes() menyediakan pelarian aksara asas untuk perlindungan suntikan SQL, ia tidak mencukupi untuk menghapuskan sepenuhnya kelemahan mysql_real_escape_string() mengatasi had ini dengan melarikan diri daripada julat aksara yang lebih luas, menangani senario di mana addslashes() gagal Dengan menggunakan mysql_real_escape_string() atau menggunakan pertanyaan berparameter sebagai alternatif yang unggul, pembangun web boleh meningkatkan dengan ketara. keselamatan aplikasi mereka terhadap serangan suntikan SQL.

Atas ialah kandungan terperinci mysql_real_escape_string() vs. addslashes(): Fungsi Melarikan Diri Yang Mana Menyediakan Perlindungan Suntikan SQL yang Lebih Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber: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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!