Serangan injeksi SQL disebabkan oleh ketidaksempurnaan dalam pernyataan program kita. Mari kita lihat cara menggunakan fungsi instr di asp untuk mencegah serangan injeksi SQL secara efektif. Hal spesifiknya harus seperti ini.
Jika instr(Request(id), )>0 atau instr(Request(id),')>0 maka respon.redirect index.htm
Tentu saja, Anda juga dapat menulis apa yang Anda inginkan setelahnya!
Mari kita pelajari dulu fungsi instr:
tata bahasa
InStr([mulai, ]string1, string2[, bandingkan])
Sintaks fungsi InStr memiliki parameter berikut:
Deskripsi parameter
mulai adalah opsional. Ekspresi numerik yang menetapkan posisi awal untuk setiap pencarian. Jika dihilangkan, pencarian akan dimulai pada posisi karakter pertama. Jika start berisi Null, terjadi kesalahan. Jika perbandingan ditentukan, parameter awal diperlukan.
String1 diperlukan. Menerima ekspresi string untuk dicari.
String2
Diperlukan. Ekspresi string yang akan dicari.
Bandingkan adalah opsional. Nilai numerik yang menunjukkan jenis perbandingan yang digunakan saat mengevaluasi substring. Lihat bagian Pengaturan untuk nilai numerik. Jika dihilangkan, perbandingan biner akan dilakukan.
Parameter perbandingan dapat memiliki nilai berikut:
Deskripsi nilai konstan
vbBinaryCompare 0 Melakukan perbandingan biner.
vbTextCompare 1 Melakukan perbandingan teks.
[nilai kembalian]
Fungsi InStr mengembalikan nilai berikut:
Jika InStr kembali
string1 panjangnya nol 0
string1 adalah Null Null
string2 adalah awal dengan panjang nol
string2 adalah Null Null
string2 tidak ditemukan 0
Temukan string2 di string1 Temukan posisi string yang cocok
mulai > Len(string2) 0
Contoh berikut menggunakan string pencarian InStr:
Redupkan SearchString, SearchChar, MyPos
SearchString =XXpXXpXXPXXP ' String yang akan dicari.
SearchChar = P' Cari P.
MyPos = Instr(4, SearchString, SearchChar, 1) 'Perbandingan teks menghasilkan 6 dimulai dari karakter keempat.
MyPos = Instr(1, SearchString, SearchChar, 0) 'Perbandingan biner menghasilkan 9 dimulai dari karakter pertama.
MyPos = Instr(SearchString, SearchChar) ' Kembali 9.
' Defaultnya adalah perbandingan biner (argumen terakhir dihilangkan).
MyPos = Instr(1, SearchString, W) 'Perbandingan biner mengembalikan 0 mulai dari karakter 1 (W tidak ditemukan).
Perhatikan bahwa fungsi InStrB menggunakan data byte yang terkandung dalam string, sehingga InStrB tidak mengembalikan posisi karakter kemunculan pertama dari satu string dalam string lain, tetapi posisi byte.
Ringkasan: Fungsi instr adalah: Mengembalikan posisi kemunculan pertama suatu karakter atau string pada string lain. Baiklah, mari kita lihat kode yang mana:
jika instr(Permintaan(id), )>0 atau instr(Permintaan(id),')>0 maka
Artinya: Bandingkan posisi spesifik karakter (spasi) dan karakter (') dalam permintaan (id) (perbandingan biner). Jika karakter (spasi) dan (') ditemukan, maka itu adalah pernyataan setelahnya!
Sekarang semua orang mengerti artinya!
Pertama kali saya melihatnya, saya bertanya, bagaimana jika di asp? Bukankah salah jika menambahkan karakter (; atau,) dan karakter lain ke Id=90? (Ya, jawabannya adalah ya :)
Mungkin orang lain berkata, maka saya akan menambahkan beberapa karakter pada pernyataan if instr(Request(id), )>0 atau instr(Request(id),')>0 kemudian, misalnya ubah menjadi: if instr(Request (id ), )>0 atau instr(Request(id),')>0 atau instr(Request(id),;)>0 atau instr(Request(id),, )>0 lalu
Tunggu, nanti bisa ditambahkan, haha! (Ini bagus! Tapi ini lebih buruk :)
Ya, setelah menambahkan ini, memang bisa mengalahkan beberapa yang disebut peretas!
Sebenarnya tidak perlu. Apakah Anda lupa kalimat instr(Request(id), )>0? Selama masih ada kalimat ini, bukankah percuma saja yang disebut hacker mengatakan, dan 1 = 1?