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('请不要在参数中包含非法字符!')history.back(-1)}</Script>"
Response.end
end if
next
Next
End If
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('请不要在参数中包含非法字符!')history.back(-1)}</Script>"
Response.end
end if
next
next
end if
End Function
不好弄,你应该把过滤写在网页的代码里,就用replace或者在数据库中建一个非法字的表专门用来供replace使用的,发现新的非法字符。就维护到表里。参考程序:
华夏爱墙。
使用 QuotedStr 函数 QuotedStr的作用是使字符串包含单引号:在字符的前后加上( ‘)号,因为在DELPHI中字符赋值是需要引号的
例如:
CommandText := CommandText + QuotedStr(Edit1.Text) Sql := ‘select … from … where uName=’ + QuotedStr(Edit1.Text)
上面的语句还可以写成:
Sql := ‘select … from … where uName=’ + Char(39) + stringreplace(Edit1.Text,””,”””,[rfReplaceAll])+ Char(39)
Char(39) 代码一个分号 stringreplace 把字符串中的单引号换成两个单引号,只是还是QuotedStr好用,前后加了单引号而且把见到的单引号都替换成两个单引号了;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)