Serangan injeksi SQL mengacu pada eksploitasi kerentanan desain untuk menjalankan perintah Sql di server target dan melakukan serangan lain untuk menghasilkan perintah Sql secara dinamis tanpa memverifikasi data yang dimasukkan oleh pengguna.
Misalnya:
Jika pernyataan kueri Anda pilih * dari admin di mana nama pengguna=''"&pengguna&"'' dan kata sandi=''"&pwd&"''"
Jadi, jika nama pengguna saya adalah: 1'' atau ''1''=''1
Kemudian, pernyataan kueri Anda akan menjadi:
pilih * dari admin dengan nama pengguna=''1 atau ''1''=''1'' dan kata sandi=''"&pwd&"''"
Dengan cara ini, pernyataan kueri Anda akan lolos, dan Anda dapat masuk ke antarmuka manajemen Anda.
Oleh karena itu, masukan pengguna perlu diperiksa saat melakukan tindakan pencegahan. Konversikan atau filter beberapa karakter khusus, seperti tanda kutip tunggal, tanda kutip ganda, titik koma, koma, titik dua, nomor koneksi, dll.
Karakter dan string khusus yang perlu difilter adalah:
pengguna bersih
xp_cmdshell
/menambahkan
exec master.dbo.xp_cmdshell
administrator grup lokal bersih
memilih
menghitung
Bertanya
arang
pertengahan
''
:
"
menyisipkan
hapus dari
meja jatuhkan
memperbarui
memotong
dari
%
Berikut ini adalah dua kode pencegahan yang saya tulis tentang mengatasi serangan injeksi untuk referensi Anda!
versi kode js untuk mencegah serangan injeksi SQL:
<bahasa skrip="****">
<!--
var url = lokasi.pencarian;
var re=/^?(.*)(pilih%20|masukkan%20|hapus%20dari%20|hitung(|jatuhkan%20tabel|perbarui%20potong%20|asc(|mid(|char (|xp_cmdshell|exec%20master|net%20localgroup%20administrators|"|../../image/bbs3000/whatchutalkingabout_smile.gifnet%20user|''|%20or%20)(.*)$/gi;
var e = re.test(url);
jika(e) {
alert("Alamat mengandung karakter ilegal~");
lokasi.href="kesalahan.asp";
}
//-->
<skrip>
[KODE AKHIR]
Versi kode ASP untuk mencegah serangan injeksi SQL~:
[KODE MULAI]
<%
Pada Kesalahan Lanjutkan Berikutnya
Redupkan strTemp
If LCase(Request.ServerVariables("HTTPS")) = "off" Lalu
strTemp = "http: //"
Kalau tidak
strTemp = "https://"
Berakhir Jika
strTemp = strTemp & Request.ServerVariables("SERVER_NAME")
Jika Request.ServerVariables("SERVER_PORT") <> 80 Maka strTemp = strTemp & ":" & Request.ServerVariables("SERVER_PORT")
strTemp = strTemp & Request.ServerVariables("URL")
Jika Trim(Request.QueryString) <> "" Lalu strTemp = strTemp & "?" & Trim(Request.QueryString)
strTemp = LCase(strTemp)
Jika Instr(strTemp,"select%20") atau Instr(strTemp,"insert%20") atau Instr(strTemp, "delete%20from") atau Instr(strTemp,"count(") atau Instr(strTemp,"drop%20table") atau Instr(strTemp,"update%20") atau Instr(strTemp,"truncate%20") atau Instr(strTemp,"asc(") atau Instr(strTemp,"mid(") atau Instr(strTemp,"char(") atau Instr(strTemp,"xp_cmdshell") atau Instr(strTemp,"exec%20master") atau Instr(strTemp,"net%20localgroup%20administrators") atau Instr(strTemp,":") atau Instr(strTemp,"net%20user") atau Instr(strTemp,"''") atau Instr(strTemp,"%20or %20") lalu
Respon.Tulis "<bahasa skrip=''****''>"
Respon.Tulis "alert(''Alamat ilegal!!'');"
Respon.Tulis "location.href=''error.asp'';"
Respon.Tulis "<script>"
Akhiri Jika
%>
Berikut ini adalah metode pencegahan yang relatif sederhana. Ini adalah metode yang sudah diketahui semua orang. Semoga saya bisa memberi Anda bantuan~
Terutama untuk transfer variabel numerik:
id = Permintaan.QueryString("id")
Jika Tidak(isNumeric(id)) Lalu
Respon.Tulis "Alamat ilegal~"
Respon.Akhir
Akhiri Jika