| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 941 人关注过本帖
标题:求 asp防注入程序
只看楼主 加入收藏
lisir123
Rank: 1
等 级:新手上路
帖 子:215
专家分:0
注 册:2005-12-16
结帖率:100%
收藏
 问题点数:0 回复次数:22 
求 asp防注入程序

各位大虾,版主们谁有不错的asp防注入程序给俺发几个,希望戴上使用说明。谢谢了

搜索更多相关主题的帖子: asp 
2006-01-12 12:00
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:0 
[引用]
现在我开始说如果编写通用的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注入攻击。

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2006-01-12 13:01
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:0 
你在网上查一下吧,这样的程序有很多的

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2006-01-12 13:02
lisir123
Rank: 1
等 级:新手上路
帖 子:215
专家分:0
注 册:2005-12-16
收藏
得分:0 

咱们这个论坛用的是什么防注程序?

像搂上说的,过滤关键字时,区分大小写吗?

2006-01-12 13:16
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 

我觉得不用那么复杂,判断一下传递参数的长度和类型就可以了


2006-01-12 13:17
lisir123
Rank: 1
等 级:新手上路
帖 子:215
专家分:0
注 册:2005-12-16
收藏
得分:0 
以下是引用rainic在2006-1-12 13:17:00的发言:

我觉得不用那么复杂,判断一下传递参数的长度和类型就可以了

看完http://www.sxsoft.com/technology_test/show_news.asp?id=452这篇文章后,我心里好怕,我对sql防注不是太了解,希望大家给我一个好的解决方法

2006-01-12 13:24
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:0 
以下是引用lisir123在2006-1-12 13:16:00的发言:

咱们这个论坛用的是什么防注程序?

像搂上说的,过滤关键字时,区分大小写吗?

这个论坛用的是什么防注程序我就不知道了,因为静夜思不会告诉吧。
一般防注都是防范SQL注入,一般不应该区分大小写(个人看法)。


本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2006-01-12 13:27
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 
它不就是在后面加了一大串语句吗,你不让他加这么多个字不就行了,再说,如果你传递的参数只是数字。你只要判断一下参数是不是数字就行了。

2006-01-12 13:27
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:0 
以下是引用lisir123在2006-1-12 13:24:00的发言:

看完http://www.sxsoft.com/technology_test/show_news.asp?id=452这篇文章后,我心里好怕,我对sql防注不是太了解,希望大家给我一个好的解决方法

用oracle就没这个问题了


本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2006-01-12 13:28
lisir123
Rank: 1
等 级:新手上路
帖 子:215
专家分:0
注 册:2005-12-16
收藏
得分:0 

可是我现在用的就是sql 该怎么办?

2006-01-12 13:35
快速回复:求 asp防注入程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043643 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved