您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > ASP >

编写通用的asp防注入程序

来源:网络收集 责任编辑:栏目编辑 发表时间:2013-07-01 03:27 点击:
    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=javascript>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=javascript>alert(’天下电影联盟SQL通用防注入系统提示↓nn请不要在参数中包含非法字符尝试注入!nnHTTP://www.521movie.com  ’);history.back(-1)</Script>" 
Response.end 
end if 
next 
next 
end if 
好了大功告成,,我们已经实现了get和post请求的信息拦截,,你只需要在conn.asp之类的打开数据库文件之前引用这个页面即可。放心的继续开发你的程序,,不用再考虑是否还会受到sql注入攻击。难道不是么?  
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • WAP常见问题问答大全(四)
    • ASP开发必备:WEB打印代码大全
    • ASP调用系统ping命令
    • asp缓存技术
    • ASP教程:第三篇 ASP基础
    • 用ASP+XML打造留言本(4)
    • 关于ASP Recordset 分页出现负数解决方法及建议
    • 用asp怎样编写文档搜索页面(5)
    • ASP处理多关键词查询实例代码
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1