Rumah >pembangunan bahagian belakang >tutorial php >Adakah mysql_real_escape_string() dan addslashes() Setara dalam Mencegah Suntikan SQL?

Adakah mysql_real_escape_string() dan addslashes() Setara dalam Mencegah Suntikan SQL?

Susan Sarandon
Susan Sarandonasal
2024-10-21 13:30:03279semak imbas

Are mysql_real_escape_string() and addslashes() Equivalent in Preventing SQL Injection?

Memahami Perbezaan: mysql_real_escape_string() vs. addslashes()

Sementara kedua-dua mysql_real_escape_string() dan addslashes() digunakan untuk digunakan aksara dalam rentetan untuk menghalang serangan suntikan SQL, terdapat perbezaan utama antara kedua-dua fungsi.

mysql_real_escape_string()

Direka bentuk khusus untuk pangkalan data MySQL, fungsi ini menambah garis miring pada watak berikut:

  • x00
  • n
  • r
  • '
  • "
  • x1a

addslash()

Sebaliknya, addslash() hanya menambah garisan pada tiga aksara:

  • '
  • NUL

Implikasi Keselamatan

Aplikasi web yang bergantung semata-mata pada addslash() untuk pengesahan input mungkin masih terdedah kepada serangan suntikan SQL Ini kerana addslashes() tidak melindungi daripada semua aksara yang boleh digunakan dalam serangan suntikan, iaitu:

  • Pecah Garis (n dan. r): Aksara ini boleh digunakan untuk memperkenalkan baris baharu ke dalam pertanyaan, yang berpotensi memintas semakan pengesahan.
  • Ulasan (--): Aksara ini boleh digunakan untuk mengulas keluar selebihnya pertanyaan, membenarkan penyerang untuk melaksanakan arahan SQL sewenang-wenangnya.
  • Aksara Melarikan Diri Tambahan (x1a): mysql_real_escape_string() melindungi daripada aksara melarikan diri tambahan yang menambahkan sebatan() tidak, seperti sebagai x1a.

Cadangan

Untuk keselamatan optimum, adalah disyorkan untuk mengelak daripada menggunakan kedua-dua mysql_real_escape_string() dan addslashes() dan sebaliknya menggunakan pertanyaan berparameter atau disediakan kenyataan. Kaedah ini membolehkan anda mengikat input pengguna pada pertanyaan tanpa perlu melarikan diri secara manual, yang lebih selamat dan cekap.

Atas ialah kandungan terperinci Adakah mysql_real_escape_string() dan addslashes() Setara dalam Mencegah Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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