Rumah  >  Artikel  >  pangkalan data  >  Mengapa Watak Backspace dan Tab Perlu Dilepaskan dalam Pertanyaan MySQL?

Mengapa Watak Backspace dan Tab Perlu Dilepaskan dalam Pertanyaan MySQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-27 22:11:02991semak imbas

  Why Should Backspace and Tab Characters Be Escaped in MySQL Queries?

Suntikan MySQL dan Melarikan Diri Aksara

Semasa menggunakan fungsi mysql_real_escape_string() daripada MySQL API, adalah penting untuk memastikan semua aksara yang terdedah melarikan diri untuk menghalang suntikan SQL. Dokumentasi MySQL menentukan bahawa aksara berikut memerlukan melarikan diri:

<pre class="brush:php;toolbar:false">0x00 : "\0",
0x08 : "\b",
0x09 : "\t",
0x1a : "\Z",
0x22 : '\"',
0x25 : "\%",
0x27 : "\'",
0x5c : "\\",
0x5f : "\_",
\n \r \ ' " \Z

Walau bagaimanapun, membandingkan senarai ini dengan port Python ESAPI, aksara tambahan dikenal pasti untuk melarikan diri, termasuk:

SELECT a FROM b WHERE c = '...user input ...';

Kebimbangan timbul mengenai keperluan untuk melepaskan aksara ruang belakang (b) dan penjadual (t).

Menangani Pertanyaan

"\bDELETE_MY_DATABASE"

Apabila input pengguna mengandungi penjadual atau ruang belakang watak, ia boleh menimbulkan risiko keselamatan. Pertimbangkan senario di mana pelakon berniat jahat menyertakan perkara berikut pada akhir input pengguna:

Apabila dihantar ke pangkalan data, aksara ruang belakang akan memadamkan petikan tunggal sebelumnya, yang membawa kepada pelaksanaan PADAM yang berniat jahat pertanyaan.

Perpustakaan Keselamatan ESAPI

Perpustakaan keselamatan ESAPI menggabungkan aksara ruang belakang dan penjadual untuk melarikan diri disebabkan masalah keselamatan yang berpotensi:

  • Tabulator (t): Aksara tab dalam rentetan boleh mengganggu gelagat jangkaan pangkalan data, yang berpotensi membenarkan penyerang memanipulasi data atau menyuntik pertanyaan berniat jahat.
  • Backspace (b): Seperti yang dilihat dalam contoh fail catting, aksara backspace boleh menulis ganti aksara yang dimasukkan sebelum ini, membolehkan anda menambah kod hasad pada permulaan pertanyaan tanpa kelihatan jelas.

Kesimpulan

Oleh itu, adalah disyorkan untuk berhati-hati dan melarikan diri daripada semua aksara yang dinyatakan dalam pustaka keselamatan ESAPI apabila berurusan dengan input pengguna dalam pertanyaan MySQL. Walaupun watak-watak tertentu seperti backspace dan tabulator mungkin kelihatan tidak berbahaya, kesannya bersama-sama dengan mekanisme lain boleh menimbulkan ancaman keselamatan yang ketara.

Atas ialah kandungan terperinci Mengapa Watak Backspace dan Tab Perlu Dilepaskan dalam Pertanyaan MySQL?. 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