首页 |缤纷校园 |心理援助 |英语世界 |公务员 |考研天地 |资格考试 |电脑认证 |免费论文 |实用文档 |求职就业 |论坛 |网络课堂 |留言版
 电脑认证首页     考试专题 考试提醒 计算机等级考试 计算机认证水平考试 IT认证 论坛
 最近更新
· [学习辅导]2007年编写通用ASP防SQL注…
· [学习辅导]2007年下半年软考:系统信…
· [计算机专题]SSH中的Spring事务代理的常…
· [计算机专题]在VisualC++应用程序中彻底…
· [计算机专题]2008年全国计算机等级考试…
· [计算机专题]路由器应用技术注意路由器…
· [学习辅导]2007年企业局域网本地路由…
· [学习辅导]2007年WindowsVista系统还…
· [计算机考试提醒]2008年下半年软件专业技术…
· [计算机考试提醒]2008年上半年计算机技术考…
 精品课程
· [精品课程推荐]08年投资项目管理师考…
· [精品课程推荐]08年职称日语考试辅导…
· [精品课程推荐]08年环境影响评价师辅…
· [精品课程推荐]08年质量资格考试辅导…
· [精品课程推荐]08年会计职称辅导报精…
· [精品课程推荐]08年建筑师考试辅导京…
· [精品课程推荐]08职称英语考试辅导王…
· [精品课程推荐]08年咨询工程师考试名…
· [精品课程推荐]08年监理工程师考试辅…
· [精品课程推荐]经济师考试网上辅导报…
 考试动态
· [二级考试动态]北京:07年下半年计算机等…
· [二级考试动态]2008年4月全国计算机等级考…
· [二级考试动态]2007年下半年计算机等级考…
· [二级考试动态]天津:2007年下半年全国计…
· [二级考试动态]计算机技术与软件专业技术…
· [二级考试动态]2007年计算机等级考试改期…
· [二级考试动态]河北07计算机考点出故障考…
· [二级考试动态]2007年贵州省计算机补考7月…
· [二级考试动态]了解考试系列:二级C语言的…
· [二级考试动态]了解考试系列:二级VC++语…
 试题下载
· [试题下载]2007年9月计算机等级考试二…
· [试题下载]2007年9月二级VB试题答案
· [试题下载]2007年9月计算机二级VB模拟…
· [试题下载]2007年9月计算机二级VB模拟…
· [试题下载]2007年9月计算机二级VF模拟…
· [试题下载]2007年9月计算机二级VB模拟…
· [试题下载]2007年9月计算机等级考试二…
· [试题下载]VC++中利用/GS开关防止缓冲…
· [试题下载]2007年4月计算机等级考试二…
· [试题下载]07年计算机等级考试二级C+…
 学习辅导
· [学习辅导]2007年C语言辅导:可移植性
· [学习辅导]2007年制作风格独特的按钮
· [学习辅导]2007年VFP中使用Grid控件设…
· [学习辅导]MoreEffectiveC++之考虑变…
· [学习辅导]C++/CLI解析之基于堆栈的对…
· [学习辅导]C++builder的文件读写操作…
· [学习辅导]C++类对象的复制-拷贝构造…
· [学习辅导]C++基本数据类型与输入输出
· [学习辅导]C++程序设计之四书五经
· [学习辅导]2007年9月计算机二级VB模拟…
 

如何编写通用的ASP防SQL注入攻击程序

文章录入:editor001    责任编辑:editor001   2007-11-9 11:02:12  来源:考大  点击数:
 

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.521movie.com ’);history.back(-1)</Script>" 
    Response.end 
   end if 
  next 
 next 
end if  

  好了大功告成,我们已经实现了get和post请求的信息拦截,你只需要在conn.asp之类的打开数据库文件之前引用这个页面即可。放心的继续开发你的程序,不用再考虑是否还会受到SQL注入攻击。

  • 上一个文章:

  • 下一个文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    关于本站 - 广告服务 - 站内导航 - 网站声明 - 友情链接 - 联系我们
    Copyright©2003-2008 www.dastu.com, All Rights Reserved.

    心语心愿科技(北京)有限责任公司 版权所有

    鄂ICP备05000022号