通过HttpModule实现数据库防注入
2008-05-25 20:04
225 查看
昨天刚把数据库防注入的原型发了上去,发觉好像还漏了点东西,现在把它全部补上.
Sql注入是常常被一些菜鸟级黑客高手惯用的手法, 就是基于Sql的注入实现, 防注入程序其实就是处理Http请求,把Get和Post的请求数据中做过滤.
通过相应的关键字去识别是否有 Sql注入攻击代码
string SqlStr = "and |exec |insert |select |delete |update |count | * |chr |mid |master |truncate |char |declare ";
在下面的代码中你要看以上面的定义, 其实就是定义要识别的关键字.
而我们处理请求一般都是通过 Request.QueryString / Request.Form 这两种, 我们可以专门写一个类去处理这些请求, 但如果在每一个处理环节都载入这个类去做处理, 那太麻烦了.
如果写一个ISAPI当然也能完成这个功能的实现, 但在.NET 中 HttpModule帮我们实现了类似于ISAPI Filter的功能, 所以改为通过 HttpModule 去处理这些事情是最好不过的啦.
我们现在要用到的只是里面的BeginRequest这个事件, 所以只需要注册BeginRequest这个事件就可以了.
1 public class SqlstrAny : IHttpModule
2 public class ProcessRequest
18using System;
2using System.Web;
3namespace Theme.Script
4
102
编写完处理后,我们把它生成类库请在Bin的目录下
csc.exe /t:library SqlstrAny.cs /r:C:\windows\Microsoft.NET\Framework\v1.1.4322\Microsoft.VisualBasic.dll
编译完后你会发现已经生成了一个 SqlstrAny.Dll 文件,这个就是我们需要的.
最后在 Web.Config 中注册它就可以用了.
<system.web>
<httpModules>
<add name="SqlstrAny" type="Theme.Script.SqlstrAny,SqlstrAny" />
</httpModules>
</system.web>
最后别忘了在 Web.Config 中加入错误处理的导向页面哦.
<add key="CustomErrorPage" value="../Error.html" />
至此,所有步骤就完成了, 打你的项目运行它, 在URL后加上 Select / and ...试试
http://localhost/Theme.Script/Process/CreatePay.aspx?action=select s&t=true
OK,完成!
源码下载: http://files.cnblogs.com/S.Sams/SqlstrAny.rar
引用:http://s.sams.cnblogs.com/articles/377924.html
Sql注入是常常被一些菜鸟级黑客高手惯用的手法, 就是基于Sql的注入实现, 防注入程序其实就是处理Http请求,把Get和Post的请求数据中做过滤.
通过相应的关键字去识别是否有 Sql注入攻击代码
string SqlStr = "and |exec |insert |select |delete |update |count | * |chr |mid |master |truncate |char |declare ";
在下面的代码中你要看以上面的定义, 其实就是定义要识别的关键字.
而我们处理请求一般都是通过 Request.QueryString / Request.Form 这两种, 我们可以专门写一个类去处理这些请求, 但如果在每一个处理环节都载入这个类去做处理, 那太麻烦了.
如果写一个ISAPI当然也能完成这个功能的实现, 但在.NET 中 HttpModule帮我们实现了类似于ISAPI Filter的功能, 所以改为通过 HttpModule 去处理这些事情是最好不过的啦.
我们现在要用到的只是里面的BeginRequest这个事件, 所以只需要注册BeginRequest这个事件就可以了.
1 public class SqlstrAny : IHttpModule
2 public class ProcessRequest
18using System;
2using System.Web;
3namespace Theme.Script
4
102
编写完处理后,我们把它生成类库请在Bin的目录下
csc.exe /t:library SqlstrAny.cs /r:C:\windows\Microsoft.NET\Framework\v1.1.4322\Microsoft.VisualBasic.dll
编译完后你会发现已经生成了一个 SqlstrAny.Dll 文件,这个就是我们需要的.
最后在 Web.Config 中注册它就可以用了.
<system.web>
<httpModules>
<add name="SqlstrAny" type="Theme.Script.SqlstrAny,SqlstrAny" />
</httpModules>
</system.web>
最后别忘了在 Web.Config 中加入错误处理的导向页面哦.
<add key="CustomErrorPage" value="../Error.html" />
至此,所有步骤就完成了, 打你的项目运行它, 在URL后加上 Select / and ...试试
http://localhost/Theme.Script/Process/CreatePay.aspx?action=select s&t=true
OK,完成!
源码下载: http://files.cnblogs.com/S.Sams/SqlstrAny.rar
引用:http://s.sams.cnblogs.com/articles/377924.html
相关文章推荐
- 通过HttpModule实现数据库防注入
- 通过HttpModule实现数据库防注入
- 通过HttpModule实现数据库防注入
- 通过HttpModule实现数据库防注入
- 通过HttpModule实现数据库防注入
- 通过HttpModule实现数据库防注入
- Android通过Http连接MySQL 实现登陆/注册(数据库+service+客户端)【大部分转自帮客之家】
- Android通过Http连接MySQL 实现登陆/注册(数据库+服务器+客户端)
- 通过HttpModule实现IP地址屏蔽功能 (转)
- 使用 HttpModule实现sql防注入
- 通过HttpModule实现IP地址屏蔽功能
- 通过实现IHttpModule初始化Nhibernate的Session
- Android通过Http连接MySQL 实现登陆/注册(数据库+服务器+客户端),android+mysql
- Android通过Http连接MySQL 实现登陆/注册(数据库+服务器+客户端)
- Android通过Http连接MySQL 实现登陆/注册(数据库+服务器+客户端)
- Android通过Http连接MySQL 实现登陆/注册(数据库+服务器+客户端)
- 通过HttpModule实现Fckeditor的分目录上传
- Android通过Http连接MySQL 实现登陆/注册(数据库+服务器+客户端)
- Android通过Http连接MySQL 实现登陆/注册(数据库+服务器+客户端),androidmysql
- 使用 HttpModule实现sql防注入