Apakah Keupayaan Melarikan Diri Tambahan yang Diberikan oleh mysql_real_escape_string() Over addslashes()?

Linda Hamilton
Lepaskan: 2024-10-21 13:11:02
asal
651 orang telah melayarinya

What Additional Escaping Capabilities Does mysql_real_escape_string() Provide Over addslashes()?

Apakah Keupayaan mysql_real_escape_string() Yang Melebihi Addslashes()?

Dalam pembangunan web, berfungsi seperti mysql_real_escape_string() dan addslashes() memainkan peranan penting dalam melindungi aplikasi daripada serangan suntikan SQL. Walau bagaimanapun, memahami nuansa antara fungsi ini adalah penting untuk memastikan keselamatan yang optimum.

Peranan Fungsi Khusus DB

Walaupun mungkin terdapat pilihan alternatif seperti pertanyaan berparameter, fungsi khusus pangkalan data seperti mysql_real_escape_string() menawarkan kelebihan khusus:

  • Disesuaikan untuk Pangkalan Data Khusus: Fungsi ini disesuaikan untuk mengendalikan ciri unik sistem pangkalan data tertentu, seperti MySQL .

Keupayaan mysql_real_escape_string()

mysql_real_escape_string() meningkatkan addslashes() dengan menambahkan garis miring pada aksara tambahan, termasuk:

x00
  • n
  • r
  • '
  • "
  • x1a
  • Sebaliknya, addslashes() hanya menambah slashes pada aksara berikut:

'
  • NUL
Kerentanan kepada SQL Injection dengan addslashes()

Walaupun fungsinya, aplikasi web yang bergantung semata-mata pada addslashes() kekal terdedah kepada serangan suntikan SQL Ini kerana addslashes() tidak terlepas dari semua aksara yang berpotensi dieksploitasi, terutamanya petikan dua kali (").

Sebagai contoh, pertimbangkan pertanyaan berikut:

Penyerang boleh memintas perlindungan addslashes() dengan memasukkan nama pengguna seperti " OR 1 = 1. Ini akan menghasilkan pertanyaan berikut:
SELECT * FROM users WHERE username = '" . addslashes($_POST['username']) . "';
Salin selepas log masuk

Pertanyaan ini akan mengembalikan semua pengguna dalam pangkalan data, kerana syarat " OR 1 = 1" sentiasa menilai kepada benar, membenarkan akses penyerang kepada data sensitif.
SELECT * FROM users WHERE username = "" OR 1 = 1";
Salin selepas log masuk

Kesimpulan

Walaupun addslashes() menawarkan perlindungan asas terhadap suntikan SQL, mysql_real_escape_string() menyediakan pertahanan yang lebih teguh dengan melarikan diri daripada rangkaian yang lebih luas. aksara khusus untuk MySQL. Oleh itu, untuk keselamatan maksimum, pembangun web harus mengutamakan penggunaan fungsi khusus pangkalan data seperti mysql_real_escape_string() atau mempertimbangkan untuk menggunakan pertanyaan berparameter untuk menghapuskan sebarang kelemahan yang berkaitan dengan pengendalian input.

Atas ialah kandungan terperinci Apakah Keupayaan Melarikan Diri Tambahan yang Diberikan oleh mysql_real_escape_string() Over addslashes()?. 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!