Ewebeditor dan editor fckeditork memfilter tanda kutip tunggal
Kami menggunakan metode penulisan SQL=insert into product(title,content) value(' &request(title)& ' ,' &request(content)& ' ), sehingga kami menemukan konten yang disalin oleh pelanggan ke editor pada saat itu , dan menemukan bahwa, Benar saja, konten ini berisi tanda kutip tunggal. Ternyata justru karena konten yang dikirimkan oleh pelanggan ke editor berisi tanda kutip tunggal maka pernyataan SQL kami diubah, yang setara dengan SQL=insert into product( judul, konten) nilai ('konten'. ,'content') menjadi SQL=insert into product(title,content) value('content','content''). Jika kita perhatikan lebih dekat, kita akan tahu bahwa hanya karena ada tanda kutip tunggal tambahan di konten, pernyataan SQL terjadi. Ada kesalahan penulisan yang serius Namun, kami juga terkejut karena penulisannya salah, mengapa pernyataan SQL tidak memberikan pesan kesalahan, tetapi juga meminta agar operasi berhasil? pikirkan tentang hacker cilik pada tahun 2003. Suka menggunakan 'or' =' or' Metode intrusi latar belakang sepertinya memanfaatkan bug bahwa tanda kutip tunggal tidak difilter saat SQL dijalankan. Akibatnya, tidak peduli bagaimana SQL dijalankan, hasilnya kembali benar menulis program harus sesederhana dan sejelas mungkin, itu juga merupakan kesalahan. Oke, masalahnya sudah ditemukan. Kedepannya, sebelum semua SQL dimasukkan ke dalam database, kita akan memfilter kolom sebelum meneruskan nilainya, sehingga masalah ini tidak lagi terjadi. Di bawah ini adalah fungsi pemfilteran keamanan SQL yang sangat lengkap. Anda tinggal menggunakannya.
Fungsi HTMLEncode(Str)
Jika Isnull(Str) Maka
Kode HTML =
Fungsi Keluar
Akhiri Jika
Str = Ganti(Str,Chr(0),, 1, -1, 1)
Str = Ganti(Str, , ", 1, -1, 1)
Str = Ganti(Str,<,<, 1, -1, 1)
Str = Ganti(Str,>,>, 1, -1, 1)
Str = Ganti(Str, skrip, 'cript, 1, -1, 0)
Str = Ganti(Str, SCRIPT, & #083;CRIPT, 1, -1, 0)
Str = Ganti(Str, Script, 'cript, 1, -1, 0)
Str = Ganti(Str, skrip, 'script, 1, -1, 1)
Str = Ganti(Str, objek, objek, 1, -1, 0)
Str = Ganti(Str, OBYEK, & #079;BJECT, 1, -1, 0)
Str = Ganti(Str, Objek, 'objek, 1, -1, 0)
Str = Ganti(Str, objek, objek, 1, -1, 1)
Str = Ganti(Str, applet, 'pplet, 1, -1, 0)
Str = Ganti(Str, APPLET, & #065;PPLET, 1, -1, 0)
Str = Ganti(Str, Applet, Applet, 1, -1, 0)
Str = Ganti(Str, applet, Applet, 1, -1, 1)
Str = Ganti(Str, [, [)
Str = Ganti(Str, ], & #093;)
Str = Ganti(Str, , , 1, -1, 1)
Str = Ganti(Str, =, =, 1, -1, 1)
Str = Ganti(Str, ', '', 1, -1, 1)
Str = Ganti(Str, pilih, pilih, 1, -1, 1)
Str = Ganti(Str, jalankan, execute, 1, -1, 1)
Str = Ganti(Str, exec, & #101xec, 1, -1, 1)
Str = Ganti(Str, gabung, gabung, 1, -1, 1)
Str = Ganti(Str, gabungan, batalkan, 1, -1, 1)
Str = Ganti(Str, dimana, di mana, 1, -1, 1)
Str = Ganti(Str, masukkan, masukkan, 1, -1, 1)
Str = Ganti(Str, hapus, hapus, 1, -1, 1)
Str = Ganti(Str, perbarui, perbarui, 1, -1, 1)
Str = Ganti(Str, suka, sukae, 1, -1, 1)
Str = Ganti(Str, jatuhkan, drop, 1, -1, 1)
Str = Ganti(Str, buat, buat, 1, -1, 1)
Str = Ganti(Str, ganti nama, ganti nama saya, 1, -1, 1)
Str = Ganti(Str, hitung, jumlah, 1, -1, 1)
Str = Ganti(Str, chr, chr, 1, -1, 1)
Str = Ganti(Str, pertengahan, m&d, 1, -1, 1)
Str = Ganti(Str, potong, potong, 1, -1, 1)
Str = Ganti(Str, nchar, nch'r, 1, -1, 1)
Str = Ganti(Str, char, ch'r, 1, -1, 1)
Str = Ganti(Str, ubah, alter, 1, -1, 1)
Str = Ganti(Str, cast, tidak, 1, -1, 1)
Str = Ganti(Str, ada, e'ists, 1, -1, 1)
Str = Ganti(Str,Chr(13), , 1, -1, 1)
HTMLEncode = Ganti(Str,','', 1, -1, 1)
Fungsi Akhir