在ASP/ASP.net架构下实现对访问者基于IP地址的访问控制

关键词: 访问 科研成果 教学科研 应用

很多情况下, 在学校的教学科研活动中, 需要自主开发一些web应用, 这些应用除了让本校或兄弟院校的教师以及学生能够远程访问外, 也需要禁止一些不相关的人员的随意访问, 如此以确保科研成果在可控的范围内流传。

那么, 如何达到这一目的呢?方法大致有两种, 第一是通过对DCE设备如路由器或者DTE设备如网关, web服务器的设置, 来达到控制访问的目的。第二, 就是直接在web应用程序中, 通过代码方式实现基于对IP地址控制访问的目的。

第一种方式的优势在于, 源头控制, 高安全性;但它的劣势也是显而易见的, 那就是该类设备一般封闭在机房, 一旦完成设置, 除非拥有最高权限的网络管理人员, 都无权去擅动。

所以, 今天我们要探讨的, 就是第二种方法, 即通过代码来实现基于IP地址的访问控制。

首先, 我们根据实际情况, 将控制对象分为三类, 第一, 对零星IP地址的控制 (针对个人) ;第二, 对某些IP地址段的控制 (针对某单位或局域网) ;第三, 对海量IP地址段的控制 (针对国家或地区) 。

下面, 我们就这三种情况, 分别给出解决方案。如有不足, 欢迎探讨。

1 第一种情况, 对零星IP地址的控制

不难理解, 所谓对IP地址的监视, 进而实现控制, 其原理就在于, 首先要取得访问者的IP地址, 随后对该IP地址与本地IP地址列表相比较, 然后根据其是否和本地列表匹配, 进而采取不同的后续行为。

这样, 在程序中, 就要有4个步骤, (1) 定义本地IP列表, (2) 取得访问者IP, (3) 匹配逻辑, (4) 后续行为。

相应的, 在程序中, 我们使用字符串预先定义本地IP列表;使用Request.ServerVariables ("REMOTE_ADDR") , 来取得访问者的IP地址;使用instr () 函数来对访问者的IP和本地IP列表进行匹配, 这样便可得到如下代码:

将这段代码放于网页中所要保护的内容之前, 便可以达到对零星IP地址控制访问的目的。

2 第二种情况, 对某些IP地址段的控制

在第一种情况中, 我们给出的代码, 只能涵盖少量零星分布的IP地址, 但是一旦出现IP网段的情况, 例如, 要对从202.120.50.8到203.123.55.6这一网段的所有IP进行访问控制, 又该如何应对呢?

要解决这一问题, 就要从分析IP地址开始, 我们现在所使用的四分十进制的IP地址, 其本质, 就是以IPV4为标准的一串32位的二进制代码, 将其以每8位四等分后, 以小数点分割。然后将每部分的8位转换成十进制数字后, 就是我们通常所看到的IP地址。即形成了一串4位256进制的代码。

这样, 问题就迎刃而解了, 既然是256进制的代码, 就可以通过一个自定义函数, 例如IP2NUM () 将其转换为十进制数字后进行比较大小, 也就是说, 只要判断:IP2NUM (起始IP)

有了这个函数, 接下来就参照第一种情况:首先取得访问者IP, 通过匹配逻辑的判断, 采取不同的后续行为。这样, 我们就可以得到如下代码:

同样, 将以上两段代码放入inc头文件中, 供需要控制访问的网页文件在文件头载入, 便可以达到对少量IP网段控制访问的目的。

3 第三种情况, 对海量IP地址段的控制

第一步, 取得所需要控制访问区域的IP地址范围, 并将该IP范围导入数据库。第二步, 将程序和数据库进行连接。第三步对访问者IP地址与数据库中每一记录进行循环匹配。

首先, 第一步如何实现呢?即我们要如何取得中国大陆地区所有的IP地址范围呢?我们可以登陆亚太地区互联网络信息中心www.apnic.net以取得全亚太地区的IP地址分配方案, 在该方案中取含cn的行数保留, 其余删除后导入数据库即可。

数据库结构如下 (以ACCESS为例, 数据库名为chinaip.mdb, 表名为chinaip) :

接下来是第二步, 我们可以把数据库连接程序写在conn.inc文件中, 在需要导入的页面起始载入即可。程序如下:

有了以上两步做铺垫, 那么第三步自然就水到渠成了。接下来, 我们使用ADODB.RecordSet对象, 在程序中定义一个记录集rs用来存放数据库数据, 并且使用do until…loop循环体来进行循环匹配, 这样, 我们就得到了如下程序:

至此, 便可实现针对国家或地区的海量IP地址段的控制访问。在此基础上, 通过程序与数据库连接的灵活运用, 可进一步实现网管员对IP地址段的人工动态管理。此另文讨论。

摘要:本文讨论了在ASP/ASP.net架构下, 如何通过编程, 实现对IP地址进行访问控制的理论。并且由浅入深的阐述了基于上述理论的三种由简到繁的实际情况, 即, 对零星IP地址的控制 (针对个人) ;对某些IP地址段的控制 (针对某单位或局域网) ;对海量IP地址段的控制 (针对国家或地区) 。并分别给出了详细的解决方案。

关键词:IP,访问控制,ASP,数据库,网络安全

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:关于学习的策划书 下一篇:基于PHP的多媒体教室管理系统的设计与实现研究