Pencegahan Suntikan MySQL: Melarikan Diri Aksara untuk Keselamatan Maksimum
Pencegahan suntikan SQL adalah penting untuk melindungi pangkalan data daripada serangan berniat jahat. Apabila menggunakan fungsi mysql_real_escape_string(), aksara , n, r, \, ', " dan Z terlepas untuk mengelakkan percubaan suntikan.
Walau bagaimanapun, perpustakaan keselamatan ESAPI OWASP.org termasuk aksara tambahan untuk melarikan diri, termasuk b (ruang belakang) dan t (tabulator). Timbul persoalan: mengapa aksara ini disertakan dan adakah ia benar-benar diperlukan?
Watak Penjadual dan Ruang Belakang dalam Pencegahan Escape
Pemasukan aksara b dan t dalam mekanisme melarikan diri ESAPI berkemungkinan berkaitan dengan kemungkinan percubaan suntikan menggunakan aksara ini:
Penyerang menghantar e-mel yang mengandungi fail teks yang dilampirkan dengan yang berikut. pertanyaan:
INSERT INTO students VALUES ("Bobby Tables",12,"abc",3.6);
Ini nampaknya merupakan pertanyaan yang tidak berbahaya Walau bagaimanapun, penyerang telah bijak meletakkan aksara ruang belakang sebelum pertanyaan, seperti berikut:
DROP TABLE students;\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b
Apabila penerima mencatat fail tersebut. dan menyalurkannya ke MySQL, aksara ruang belakang menimpa pertanyaan yang tidak berbahaya, mengakibatkan pelajar DROP TABLE yang berniat jahat; perintah dilaksanakan tanpa diketahui oleh penerima.
Selain itu, aksara penjadual (t) berpotensi digunakan untuk menjajarkan kod hasad dalam pertanyaan, meningkatkan kebolehbacaannya dan menjadikannya lebih sukar untuk dikesan. Oleh itu, melepaskan watak ini memberikan lapisan perlindungan tambahan terhadap kemungkinan percubaan suntikan.
Atas ialah kandungan terperinci Mengapakah Aksara ESAPI Melarikan Diri Backspace (\\b) dan Tabulator (\\t) dalam Pencegahan Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!