sql过滤关键字问题

www_31365_com 2005-11-17 10:48:06
以下是实现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('CN7U系统警告 :请不要在参数中包含非法字符尝试注入!');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('CN7U系统警告 :请不要在参数中包含非法字符尝试注入!');history.back(-1)</Script>"
Response.End
End If
Next
Next
End If



但是该代码将内容中包含有上述关键词的内容都拦截了,有什么办法只拦截与关键字完全匹配的,比如:
内容里包含有 land 的时候不会应为包含 and 而拦截。
另外,有什么办法将内容中含有关键字的自动替换成其他:比如,一段内容里包含了 count (单独做为一个字符出现,不是某单词中包含count)我就将count替换成[count]或者count1等非count字符。
...全文
228 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lieco 2005-11-18
  • 打赏
  • 举报
回复
光后面可以
www_31365_com 2005-11-17
  • 打赏
  • 举报
回复
楼上的白开心你好,按你的意思是一般关键字在运用过程中都是前后有空格的,那select|delete|update等这类型有前面没有空格的,是不是只要在后面加个空格就可以了呢?
hj3793 2005-11-17
  • 打赏
  • 举报
回复
SQL_injdata = "'|and|exec|insert|select|delete|update|count|*|%
---------
两边加空格,| and |

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧