Dim Query_Badword,Form_Badword,i,Err_Message,Err_Web,name
'------定義部份 頭----------------------------------------------------------------------
Err_Message = 1 '處理方式:1=提示資訊,2=轉向頁面,3=先提示再轉向
Err_Web = "Err.Asp" '出錯時轉向的頁面
Query_Badword="'∥and∥select∥update∥chr∥delete∥%20from∥;∥insert∥mid∥master.∥set∥chr(37)∥="
'在這部份定義get非法參數,使用"∥"號間隔
Form_Badword="'∥%∥&∥*∥#∥(∥)∥=" '在這部份定義post非法參數,使用"∥"號間隔
'-----對 post 表 單值的過濾.
if request.form<>"" then
Chk_badword=split(Form_Badword,"∥")
FOR EACH name IN Request.Form
for i=0 to ubound(Chk_badword)
If Instr(LCase(request.form(name)),Chk_badword(i))<>0 Then
Select Case Err_Message
Case "1"
Response.Write "<Script Language=JavaScript>alert('出錯了!表單 "&name&" 的值中包含非法字串! 請不要在表單中出現: % & * # ( ) 等非法字元!');window.close();</Script>"
Case "2"
Response.Write "<Script Language=JavaScript>location.href='"&Err_Web&"'</Script>"
Case "3"
Response.Write "<Script Language=JavaScript>alert('出錯了!參數 "&name&"的值中包含非法字串! 請不要在表單中出現: % & * # ( ) 等非法字元!');location.href='"&Err_Web&"';</Script>"
End Select
Response.End
End If
NEXT
NEXT
end if
%>
'------定義部份 尾-----------------------------------------------------------------------
'
On Error Resume Next
'----- 對 get query 值 的過濾.
if request.QueryString<>"" then
Chk_badword=split(Query_Badword,"∥")
FOR EACH Query_Name IN Request.QueryString
for i=0 to ubound(Chk_badword)
If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(i))<>0 Then
Select Case Err_Message
Case "1"
Response.Write "<Script Language=JavaScript>alert('傳參錯誤!參數 "&name&" 的值中包含非法字串! 請不要在參數中出現:and update delete ; insert mid master 等非法字元!');window.close();</Script>"
Case "2"
Response.Write "<Script Language=JavaScript>location.href='"&Err_Web&"'</Script>"
Case "3"
Response.Write "<Script Language=JavaScript>alert('傳參錯誤!參數 "&name&"的值中包含非法字串! 請不要在參數中出現:and update delete ; insert mid master 等非法字元!');location.href='"&Err_Web&"';</Script>"
End Select
Response.End
End If
NEXT
NEXT
End if