无效字符

zhengchengbaishi 2013-11-19 10:41:11
错误提示:
Microsoft VBScript 编译器错误 错误 '800a0408'

无效字符

/Manage/Web/NewsInfo/Modify2.asp,行 13

if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then


写了一个防SQl注入的,报错了

Dim sql_injdata,Sql_Inj,SQL_Get,Sql_Post,Sql_DATA
sql_injdata = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
Sql_Inj = Split(SQL_Injdata, "|")
Response.Write Sql_Inj

If Request.Form<>"" Then
For Each Sql_Post In Request.Form
For Sql_DATA = 0 To UBound(SQL_inj)
Response.write ("<script>alert('"&Request.Form(Sql_Post)&"!');</script>")
Response.Write Request.Form(Sql_Post)
Response.Write Sql_Inj(Sql_DATA)
if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then
'If instr(Request.Form(Sql_Post),SQL_inj(SQL_Data))>0 Then
   Response.Write "<Script>alert('系统提示请不要在参数中包含非法字符尝试注入!')</Script>"
   Response.End
End If
Next
Next
End If
...全文
217 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengchengbaishi 2013-11-19
  • 打赏
  • 举报
回复
以下是正确代码

Dim sql_injdata, Sql_Inj, SQL_Get, Sql_Post, Sql_DATA
sql_injdata = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
Sql_Inj = Split(SQL_Injdata, "|")
If Request.Form<>"" Then
    For Each Sql_Post In Request.Form
        For Sql_DATA = 0 To UBound(SQL_inj)
            If InStr(LCase(Request.Form(Sql_Post)), Sql_Inj(Sql_DATA)) >0 Then
                Response.Write("<Script>alert('系统提示请不要在参数中包含非法字符尝试注入!')</Script>")
                Response.End
            End If
        Next
    Next
End If

zhengchengbaishi 2013-11-19
  • 打赏
  • 举报
回复
引用 5 楼 wangsdong 的回复:
我帮你检查了一下 Response.Write Sql_Inj 写法错误,因为Sql_Inj是数组,不可以这样输出 if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then 这句中的大于号是中文的,你改一下 Response.Write "<Script>alert('系统提示请不要在参数中包含非法字符尝试注入!');</Script>" Response.End 这两句前面的空格删掉,因为有特殊字符在里面,重新手动输入空格。 再运行一下你的程序
还有个问题请教一下,你是怎么看出来if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then 这句中的大于号是中文的 我找了半天都没造出来
zhengchengbaishi 2013-11-19
  • 打赏
  • 举报
回复
引用 5 楼 wangsdong 的回复:
我帮你检查了一下 Response.Write Sql_Inj 写法错误,因为Sql_Inj是数组,不可以这样输出 if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then 这句中的大于号是中文的,你改一下 Response.Write "<Script>alert('系统提示请不要在参数中包含非法字符尝试注入!');</Script>" Response.End 这两句前面的空格删掉,因为有特殊字符在里面,重新手动输入空格。 再运行一下你的程序
谢谢,确实是这样的,已经解决了,谢谢哦
php_wsd 2013-11-19
  • 打赏
  • 举报
回复
我帮你检查了一下 Response.Write Sql_Inj 写法错误,因为Sql_Inj是数组,不可以这样输出 if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then 这句中的大于号是中文的,你改一下 Response.Write "<Script>alert('系统提示请不要在参数中包含非法字符尝试注入!');</Script>" Response.End 这两句前面的空格删掉,因为有特殊字符在里面,重新手动输入空格。 再运行一下你的程序
zhengchengbaishi 2013-11-19
  • 打赏
  • 举报
回复
引用 3 楼 wangsdong 的回复:
检查一下里面的大于号是不是中文的?
不是的
php_wsd 2013-11-19
  • 打赏
  • 举报
回复
检查一下里面的大于号是不是中文的?
zhengchengbaishi 2013-11-19
  • 打赏
  • 举报
回复
引用 1 楼 wangsdong 的回复:
Sql_Post,Sql_DATA分别是啥东西?
Sql_Post是下面这句的 For Each Sql_Post In Request.Form Sql_DATA应该是这句里面的 For Sql_DATA = 0 To UBound(SQL_inj)
php_wsd 2013-11-19
  • 打赏
  • 举报
回复
Sql_Post,Sql_DATA分别是啥东西?
php_wsd 2013-11-19
  • 打赏
  • 举报
回复
因为那个大于号看起来怪怪的,不正常。

28,391

社区成员

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

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