推薦:用紅色顯示ASP查詢數(shù)據(jù)時得到的記錄關(guān)鍵詞% response.write replace(rs(字段X),searchname,font color=#FF0000 searchname /font) % 說明:rs為記錄集對象,searchname為搜索的關(guān)鍵詞 轉(zhuǎn)載自HTMer[http://www.htmer.com/]
SQL注入一般的http請求不外乎get和post,所以只要我們在文件中過濾所有post或者get請求中的參數(shù)信息中非法字符,就可以防SQL注入攻擊。
IIS傳遞給asp.dll的get請求是以字符串的形式,當傳遞給Request.QueryString數(shù)據(jù)后,asp解析器會分析Request.QueryString的信息,然后根據(jù)"&",分出各個數(shù)組內(nèi)的數(shù)據(jù)。下面分別列出get攔截和post攔截的代碼: '======get攔截======
dim sql_injdata
SQL_injdata = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
SQL_inj = split(SQL_Injdata,"|")
If Request.QueryString<>"" Then
For Each SQL_Get In Request.QueryString
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Then
Response.Write "<Script Language='javascript'>alert('HTMer.com系統(tǒng)提示↓nn請不要在參數(shù)中包含非法字符嘗試注入!nnHTTP://www.htmer.com');history.back(-1)</Script>"
Response.end
end if
next
next
end If
'======post攔截======
If Request.Form<>"" Then
For Each Sql_Post In Request.Form
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then
Response.Write "<Script Language='javascript'>alert('HTMer.com系統(tǒng)提示↓nn請不要在參數(shù)中包含非法字符嘗試注入!nnHTTP://www.htmer.com');history.back(-1)</Script>"
Response.end
end if
next
next
end if
好了,我們已經(jīng)實現(xiàn)了get和post請求的信息攔截,你只需要在conn.asp之類的打開數(shù)據(jù)庫文件之前引用這個頁面即可。
分享:在asp程序中過濾不文明字符的函數(shù)% Functioncutbadchar(str) badstr=不|文|明|字|符|列|表|格|式’此處填寫不文明的詞語,用|分開 badword=split(badstr,|) Fori=0toUbound(badword) Ifinstr(str,badword(i))0then str=Replace(str,badword(i),***) EndIf Next cutbadchar=str EndFunct