Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah Keupayaan Melarikan Diri Tambahan yang Diberikan oleh mysql_real_escape_string() Over addslashes()?

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

Linda Hamilton
Linda Hamiltonasal
2024-10-21 13:11:02652semak imbas

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']) . "';

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";

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!

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