求过滤SQL非法字符的函数?

求过滤SQL非法字符的函数?,第1张

Function CheckSql() '防止SQL注入

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好用,前后加了单引号而且把见到的单引号都替换成两个单引号了;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9614712.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存