.NET:在ASP.NET中如何进行IP限制
2013-05-05 08:37
489 查看
背景
为了增强系统的安全,很多信息系统都提供了“IP限制”功能。功能虽然简单,但是从业五年来从来没有是实现过,因此就以博文的形式记录下来。思路
实现应该很简答,功能可以分解为如下这三个问题:判断当前请求是否应用IP限制,有些请求不用应用IP限制的。
当前客户IP是否包含在限制列表中。
如何以AOP的形式应用IP限制
1和2可以抽象为一个接口
using System; namespace IpLimit.Codes { interface IIpLimitService { bool IsInExcludeUrl(string url); bool IsInLimit(string ip); } }
3可以用IHttpModule实现
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace IpLimit.Codes { public sealed class IpLimitModule : IHttpModule { public void Dispose() { } public void Init(HttpApplication context) { context.BeginRequest += this.OnBeginRequest; } private void OnBeginRequest(object sender, EventArgs args) { var ipLimitService = new IpLimitService(); var clientIp = HttpContext.Current.Request.UserHostAddress; var requestUrl = HttpContext.Current.Request.Url; if (ipLimitService.IsInExcludeUrl(requestUrl.AbsolutePath)) { return; } if (ipLimitService.IsInLimit(clientIp)) { HttpContext.Current.Response.Redirect("IpLimit.html"); } } } }
实现细节
this.Request.UserHostAddress的格式为“127.0.0.1”。this.Request.Url.AbsolutePath的格式为“/Tests/GetIp.aspx”,
具体限制IP列表和排除地址列表的存储可以自己酌情实现。
备注
对应黑客知识,我并不了解,黑客是不是很容易模拟客户端IP,有高手的话,请指点一二。相关文章推荐
- .NET:在ASP.NET中如何进行IP限制
- 一起谈.NET技术,如何对ASP.NET进行性能优化
- 一起谈.NET技术,ASP.NET Eval如何进行数据绑定
- ASP.NET Eval如何进行数据“.NET研究”绑定
- ASP.NET 中如何对生成的 HTML 内容流进行控制?
- ASP.NET如何进行性能优化问题2
- ASP.NET如何进行性能优化问题
- ASP.NET 中如何对生成的 HTML 内容流进行控制
- 如何禁止用户直接对TextBox进行数据粘贴?(ASP.NET WEB开发)
- ASP.NET如何进行性能优化问题(1)
- ASP.NET MVC Tip #20 – 如何对 Data Access 进行单元测试
- 安装好.net之后如何运行asp.net程序
- 如何限制asp.net中上传文件的大小
- 如何用ASP.net将参数进行Post提交
- 一起谈.NET技术,关于大型ASP.NET应用系统的架构—如何做到高性能高可伸缩性
- ASP.NET安全问题--ASP.NET安全架构--如何实现.NET安全
- asp.net如何进行mvc异步查询
- ASP.NET Eval如何进行数据绑定
- asp中对ip进行过滤限制函数
- Asp.net 母版页情况下如何进行jquery.validate验证 推荐