我刚开始学习asp,所以很多问题好不太懂,希望大家能指点我一下。
本来我使用如下防注入代码:
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.redirect "/error.asp?err=请勿输入非法字符!"
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.redirect "/error.asp?err=请勿输入非法字符!"
end if
next
next
end if
结果,网站被人注入了,后来发现黑客是使用的cookies注入,现在我在这段代码后面加上这样一段,行不行?
If Request.Cookies<>"" Then
For Each Sql_Cook In Request.Cookies
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.Cookies(Sql_Cook),Sql_Inj(Sql_DATA))>0 Then
response.redirect "/error.asp?err=请勿输入非法字符!"
end if
next
next
end if
请问大家,这段代码这样写行不行,语法什么的有错误吗?可不可以起到防cookis注入的作用?这样做防注入之后我在
程序中是不是就可以放心大胆地使用request("id")这样的语句了呢?
谢谢大家!
问题补充:
谢谢大家的回答,我现在用的这个源码是别人写的,满篇都是request("id"),根本没有区分post还是get,如果一个一个改的话太费事了,再说我又刚开始
学习,还不是很明白,
我现在想在原有的防注入代码后加上那么一段,好歹提高一下防注入的安全性。但是水平所限,我又不知道我自己加的那一段对不对,所以才问了这个问题。
所以请大家给参谋一下我自己加的那一段代码就行了,多谢
首先明确的告诉你 你不能直接放心大胆的使用 request("id")这样的语句
防注入
系统 对真正的高手很容易就绕过
所以你得养成一个习惯 对所有输入的数据进行过滤筛选. 这才能从根本上来防止注入. 你要是以为加了防注入就能直接使用而不进行过滤 那是大错特错了.
恩 看你加的代码应该是没错的