1. 需求分析
通过深入的交流和沟通,确认了该发电厂在企业网站用户访问控制方面的改进要求,大致情况如下:
a) 网站基于Asp.Net2.0实现,不允许修改源程序
b) 厂内用户可直接访问整个站点的所有页面,员工不需要身份验证
c) 厂外用户只能访问指定的页面
显而易见,他们就是针对企业网站增加一项IP过滤功能,在厂外用户访问某些敏感页面时将其拒之门外。首先我们需要设置一个IP列表和一个Url列表,前者包含所有厂内IP,后者包含厂外用户可访问的全部Url,并且这两个列表都是可维护的;另外一个核心问题是,我们需要选择一个合理的方式将开发好的功能模块集成到企业网站中,HttpModules义不容辞。
在Asp.Net时代,IIS 接收到请求并将其调度给 aspnet_isapi.dll之后,ASP.NET 引擎开始逐个对已配置的HTTP模块(HttpModules)进行初始化,然后再调用正确的HTTP处理程序并呈现被请求的资源,最后将所生成的标记返回给 IIS 和请求客户端(如下图所示)。
IIS 和 ASP.NET 正在处理请求
如果你想了解更多关于HttpModules的资料,请自行查阅。
2. 方案设计
2.1. 开发环境
编程语言:C#2.0
开发工具:Visual Studio.NET2008
操作系统:windows2003 R2
2.2. 概要设计
使用HttpModules实现IP过滤功能的核心思想是:自定义一个HttpModule捕获每一个用户请求,然后获取相关的用户IP和被请求的Url进行逻辑判断,将未授权的请求重定向到一个错误提示页。Http请求授权与否的判断逻辑为:
1) 判断请求是否来自本地计算机,是则自动忽略,否则继续;
2) 判断用户IP是否属于内网(IP列表),是则忽略,否则继续;
3) 判断被请求Url是否授权所有用户访问,是则忽略,否则继续;
4) 将请求重定向到错误提示页。
在HttpApplication的BeginRequest事件中附加自定义的处理程序即可完成Http请求的捕获。此外,为了便于维护我们应将程序运行需要的各项参数(IP列表、Url列表、错误提示页路径等等)存储于特定的XML配置文件中,为了提高效率,我们还需要将配置文件执行内存级的缓存处理并对IP、Url匹配算法进行适当的优化。
12下一页阅读全文
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?