Mengapa Watak Backspace dan Tab Perlu Dilepaskan dalam Pertanyaan MySQL?

Mary-Kate Olsen
Lepaskan: 2024-10-27 22:11:02
asal
990 orang telah melayarinya

  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 : "\_",
Salin selepas log masuk
\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 ...';
Salin selepas log masuk

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

Menangani Pertanyaan

"\bDELETE_MY_DATABASE"
Salin selepas log masuk

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!

sumber:php.cn
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!