前往顾页
以后地位: 主页 > 收集编程 > Asp实例教程 >

ASP防SQL注入抨击打击法度代码

时候:2012-04-18 21:53来源:知行网www.zhixing123.cn 编辑:麦田守望者

SQL注入被那些菜鸟级别的所谓黑客妙手玩出了滋味,发明现在年夜部分黑客入侵都是基于SQL注入实现的,哎,谁让这个入门容易呢,好了,不说废话了,现在我开端说如果编写通用的SQL防注入法度一般的http请求不过乎get 和 post,所以只需我们在文件中过滤所有post或get请求中的参数信息中不法字符便可,所以我们实现http 请求信息过滤便可以判定是是不是遭到SQL注入抨击打击。
IIS通报给asp.dll的get 请求是是以字符串的情势,当通报给Request.QueryString数据后,asp剖析器会阐发Request.QueryString的信息,然后按照"&",分出各个数组内的数据所以get的反对以下:
起首我们定义请求中不克不及包含以下字符:

|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare

各个字符用"|"隔开,,然后我们判定的获得的Request.QueryString,详细代码以下 :

 

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=****>alert('SQL通用防注入体系提示↓nn请不要在参数中包含不法字符测验测验注入!');history.back(-1)</Script>"
Response.end
end if
next
Next
End If
如许我们就实现了get请求的注入的反对,但是我们还要过滤post请求,所以我们还得继续考虑request.form,这个也是以数组情势存在的,我们只需求再进一次循环判定便可。代码以下:

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=****>alert('SQL通用防注入体系提示↓nn请不要在参数中包含不法字符测验测验注入!nnHTTP: //www.itlobo.com/');history.back(-1)</Script>"
Response.end
end if
next
next
end if

好了年夜功成功,我们已实现了get和post请求的信息反对,你只需求在conn.asp之类的翻开数据库文件之前援引这个页面便可。放心的继续开辟你的法度,不消再考虑是不是还会遭到SQL注入抨击打击。莫非不是么?

我必须申明的一点是:此体例并不是最完美的,想避免SQL注入,也不是很简朴的,我小我感觉,这个只是避免一般的注入,如果你利用了此体例,对你酿成的丧失,本站概不卖力。请自行考虑!

------分开线----------------------------
标签(Tag):asp asp技能 asp实例教程 asp源代码 asp根本教程
------分开线----------------------------
保举内容
猜你感兴趣