急求:ASP.NET中如何对网页的访问进行IP地址限制?

5566energy 2011-01-10 09:33:25
各位大侠们好,小弟在此发帖求助,先说明一下情况

单位局域网,IP地址段是10.75.19.*(1-255),然后单位的门户网站改版了,服务器不在我们单位内部了,统一交给一个单

位管理了,意思就是对其他内部的联网单位也开放了,我们是个大局域网,还有其他单位,但是领导不想让其他单位的人访问

我们单位的网站,所以提出要对IP地址进行限制,我在百度上搜了些,大部分方法是将合法IP地址存入数据库,然后在登录网

站时进行验证,但是这个方法不适合我们的情况,因为数据库服务器不在我们这里,我们只有更改网站前台页面代码的权限。

不知道各位大侠可有类似的经验,公布一下代码,之前我们用ASP实现过,现在是要用ASP。NET,谢谢,如果小弟有表达不清

楚或是错误的地方,那见笑了

附上之前用ASP实现的IP地址限制的代码:(其中有部分IP地址是单独加入的,有特殊权限,我们单位的IP段是10.75.19.*)

<%if left(Request.ServerVariables("REMOTE_ADDR"),9)="10.75.19." or Request.ServerVariables("REMOTE_ADDR")="10.75.30.246" or Request.ServerVariables("REMOTE_ADDR")="10.75.30.247" or Request.ServerVariables("REMOTE_ADDR")="10.75.30.249" or Request.ServerVariables("REMOTE_ADDR")="10.75.30.250" or Request.ServerVariables("REMOTE_ADDR")="10.75.30.251" or Request.ServerVariables("REMOTE_ADDR")="10.75.30.252" or Request.ServerVariables("REMOTE_ADDR")="10.75.169.191" or Request.ServerVariables("REMOTE_ADDR")="10.75.169.192" or Request.ServerVariables("REMOTE_ADDR")="10.75.169.193" or Request.ServerVariables("REMOTE_ADDR")="10.75.159.228" or Request.ServerVariables("REMOTE_ADDR")="10.75.159.129"or Request.ServerVariables("REMOTE_ADDR")="172.16.110.60" or Request.ServerVariables("REMOTE_ADDR")="172.16.110.62" or Request.ServerVariables("REMOTE_ADDR")="10.75.159.227" or Request.ServerVariables("REMOTE_ADDR")="10.75.159.229" or left(Request.ServerVariables("REMOTE_ADDR"),12)="10.75.159.23" or Request.ServerVariables("REMOTE_ADDR")="172.16.115.156" or left(Request.ServerVariables("REMOTE_ADDR"),12)="10.75.159.51" or left(Request.ServerVariables("REMOTE_ADDR"),12)="10.75.155.18" or left(Request.ServerVariables("REMOTE_ADDR"),12)="10.75.155.19" or Request.ServerVariables("REMOTE_ADDR")="10.75.159.219" or left(Request.ServerVariables("REMOTE_ADDR"),11)="10.75.41.17" or left(Request.ServerVariables("REMOTE_ADDR"),11)="10.75.41.18" or left(Request.ServerVariables("REMOTE_ADDR"),11)="10.75.41.19" or left(Request.ServerVariables("REMOTE_ADDR"),11)="10.75.16.173" or left(Request.ServerVariables("REMOTE_ADDR"),11)="10.75.41.43"or left(Request.ServerVariables("REMOTE_ADDR"),11)="10.75.41.47" or left(Request.ServerVariables("REMOTE_ADDR"),11)="10.75.41.47" then %>

坐等好心人来帮忙!好人一生平安!



...全文
445 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
lilianjie0426 2011-01-10
  • 打赏
  • 举报
回复
用xml存储允许的ip就可以,不需要用数据库。。。。
wuyq11 2011-01-10
  • 打赏
  • 举报
回复
获取访问IP,地址转向
判断IP范围如Ip转long判断
System.Net.IPAddress ipaddress = System.Net.IPAddress.Parse("");
long ip= ipaddress.Address;

a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;
guoyan246 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 phil999 的回复:]
可以在 global.asax 处理 Application_AuthenticateRequest 事件

验证 ip 的代码,如果刚好是一个整齐的 ip 段,可以这样写:

if(!Request.ServerVariables("REMOTE_ADDR").StartsWith("10.75.19."))
{
Response.Clear();
Response.Write("……
[/Quote]

。。。上面顶错了,该顶这个
guoyan246 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 watchmevictory 的回复:]
先谢谢楼上的各位

我们现在的做法是:分配给每个需要在网站上发文的人权限,用户名密码那种,但是这样领导不满意,操作起来也麻烦,那个统一管理各单位的单位,还是我们的内部单位,呵呵。。。

所以,还是期待限制IP的方法,需要源码,2楼说的xml,我们不会配置啊,水平有限
[/Quote]

UP
phil999 2011-01-10
  • 打赏
  • 举报
回复
不会操作xml,看来楼主不是专门做.net的
phil999 2011-01-10
  • 打赏
  • 举报
回复
可以在 global.asax 处理 Application_AuthenticateRequest 事件

验证 ip 的代码,如果刚好是一个整齐的 ip 段,可以这样写:

if(!Request.ServerVariables("REMOTE_ADDR").StartsWith("10.75.19."))
{
Response.Clear();
Response.Write("invalid ip");
Response.End();
}

如果不是整齐的 ip 段,可以把所有 ip 列在文本文件里,每行一个,读到 List<string>里

if(!allowedIps.Contains(Request.ServerVariables("REMOTE_ADDR")))
{
Response.Clear();
Response.Write("invalid ip");
Response.End();
}

5566energy 2011-01-10
  • 打赏
  • 举报
回复
先谢谢楼上的各位

我们现在的做法是:分配给每个需要在网站上发文的人权限,用户名密码那种,但是这样领导不满意,操作起来也麻烦,那个统一管理各单位的单位,还是我们的内部单位,呵呵。。。

所以,还是期待限制IP的方法,需要源码,2楼说的xml,我们不会配置啊,水平有限
liuwei2500 2011-01-10
  • 打赏
  • 举报
回复
不知道你们以前的网站是如何设计的。如果在一开始的时候是如下设计可能目前就非常好做了。
自定义类:(所有页面的基类)
Class WebBase:System.Web.UI.Page
{
pulic Page_load(...sender,...e){}
}
然后所有的页面全部继承于该类或者该类的子类。在所有页面的Page_Load事件里面首先调用base.PageLoad()事件,如此一来,只需要在WebBase里面加入IP限制,则可以对所有网站页面使用。
IHandler 2011-01-10
  • 打赏
  • 举报
回复
获取访问的IP,如果不在允许访问的IP段,就提示禁止访问
Ny-6000 2011-01-10
  • 打赏
  • 举报
回复
不知想通过什么方式限止?

修改程序<>修改路由器配置<>还是其他方式?

不同方式,办法不同了.
jeven_xiao 2011-01-10
  • 打赏
  • 举报
回复
那你得想想你前台页面修改的对象是什么 ?允许访问的IP地址。你的需求看不明白
xxoo2007 2011-01-10
  • 打赏
  • 举报
回复
数据么,不一定存在数据库里的才叫数据.一个XML文件一样可以当做数据库来用嘛.
天下在我心 2011-01-10
  • 打赏
  • 举报
回复
把允许访问的IP地址存入一个数组,然后根据访问的IP地址进行过滤。不过你们要是只能在前台做修改,还真是不清楚要怎么做。
5566energy 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 phil999 的回复:]
可以在 global.asax 处理 Application_AuthenticateRequest 事件

验证 ip 的代码,如果刚好是一个整齐的 ip 段,可以这样写:

if(!Request.ServerVariables("REMOTE_ADDR").StartsWith("10.75.19."))
{
Response.Clear();
Response.Write("……
[/Quote]

关键就是在这里,那个IF语句的功能不执行,就是判断IP地址的

<TABLE cellSpacing=1 cellPadding=0 width="100%" align=left bgColor=#e4e4e4 border=0>
<TBODY>
<TR>
<TD background=/_layouts/2052/images/images-red/jiao.jpg bgColor=#ffffff height=30>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=right border=0>
<TBODY>
<TR>
<TD width="14%" height=26>
<DIV align=right><IMG height=14 src="http://10.75.1.12/_layouts/2052/images/images-red/red-dian.gif"

width=22></DIV></TD>
<TD width="63%">
<DIV class=title-red align=center><FONT size=3>会议纪要</FONT></DIV></TD>
<TD width="23%">

<%
if left(Request.ServerVariables("REMOTE_ADDR"),9)="10.75.19."
then%>
<A title="" href="http://10.75.19.98:86/hyjy/index.asp" target=_blank><IMG height=13

src="http://10.75.1.12/_layouts/2052/images/images-red/mores-02.gif" width=57 border=0></A>
<%Else %>
<IMG height=13 src="http://10.75.1.12/_layouts/2052/images/images-red/mores-02.gif" width=57 border=0>
<%End IF%>
</TD>
</TR></TBODY></TABLE></TD></TR>
<TR>
<TD width="100%" height=10></TD></TR></TBODY></TABLE>


请问为什么IF语句不执行?
5566energy 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 phil999 的回复:]
可以在 global.asax 处理 Application_AuthenticateRequest 事件

验证 ip 的代码,如果刚好是一个整齐的 ip 段,可以这样写:

if(!Request.ServerVariables("REMOTE_ADDR").StartsWith("10.75.19."))
{
Response.Clear();
Response.Write("……
[/Quote]

我们的那个页面的代码是这样的:现在就是那个IF语句里判断IP地址的语句不执行,不知道为什么,如果用你的语句来改,应该怎么改呢?

<TABLE cellSpacing=1 cellPadding=0 width="100%" align=left bgColor=#e4e4e4 border=0>
<TBODY>
<TR>
<TD background=/_layouts/2052/images/images-red/jiao.jpg bgColor=#ffffff height=30>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=right border=0>
<TBODY>
<TR>
<TD width="14%" height=26>
<DIV align=right><IMG height=14 src="http://10.75.1.12/_layouts/2052/images/images-red/red-dian.gif" width=22></DIV></TD>
<TD width="63%">
<DIV class=title-red align=center><FONT size=3>会议纪要</FONT></DIV></TD>
<TD width="23%">

<%
if left(Request.ServerVariables("REMOTE_ADDR"),9)="10.75.19." or Request.ServerVariables("REMOTE_ADDR")="10.75.30.246" or Request.ServerVariables("REMOTE_ADDR")="10.75.30.247" or Request.ServerVariables("REMOTE_ADDR")="10.75.30.249" or Request.ServerVariables("REMOTE_ADDR")="10.75.30.250" or Request.ServerVariables("REMOTE_ADDR")="10.75.30.251" or Request.ServerVariables("REMOTE_ADDR")="10.75.30.252" or Request.ServerVariables("REMOTE_ADDR")="10.75.169.191" or Request.ServerVariables("REMOTE_ADDR")="10.75.169.192" or Request.ServerVariables("REMOTE_ADDR")="10.75.169.193" or Request.ServerVariables("REMOTE_ADDR")="10.75.159.228" or Request.ServerVariables("REMOTE_ADDR")="10.75.159.129"or Request.ServerVariables("REMOTE_ADDR")="172.16.110.60" or Request.ServerVariables("REMOTE_ADDR")="172.16.110.62" or Request.ServerVariables("REMOTE_ADDR")="10.75.159.227" or Request.ServerVariables("REMOTE_ADDR")="10.75.159.229" or left(Request.ServerVariables("REMOTE_ADDR"),12)="10.75.159.23" or Request.ServerVariables("REMOTE_ADDR")="172.16.115.156" or left(Request.ServerVariables("REMOTE_ADDR"),12)="10.75.159.51" or left(Request.ServerVariables("REMOTE_ADDR"),12)="10.75.155.18" or left(Request.ServerVariables("REMOTE_ADDR"),12)="10.75.155.19" or Request.ServerVariables("REMOTE_ADDR")="10.75.159.219" or left(Request.ServerVariables("REMOTE_ADDR"),11)="10.75.41.17" or left(Request.ServerVariables("REMOTE_ADDR"),11)="10.75.41.18" or left(Request.ServerVariables("REMOTE_ADDR"),11)="10.75.41.19" or left(Request.ServerVariables("REMOTE_ADDR"),11)="10.75.16.173" or left(Request.ServerVariables("REMOTE_ADDR"),11)="10.75.41.43"or left(Request.ServerVariables("REMOTE_ADDR"),11)="10.75.41.47" or left(Request.ServerVariables("REMOTE_ADDR"),11)="10.75.41.47" then%>
<A title="" href="http://10.75.19.98:86/hyjy/index.asp" target=_blank><IMG height=13 src="http://10.75.1.12/_layouts/2052/images/images-red/mores-02.gif" width=57 border=0></A>
<%Else %>
<IMG height=13 src="http://10.75.1.12/_layouts/2052/images/images-red/mores-02.gif" width=57 border=0>
<%End IF%>
</TD>
</TR></TBODY></TABLE></TD></TR>
<TR>
<TD width="100%" height=10></TD></TR></TBODY></TABLE>
xxoo2007 2011-01-10
  • 打赏
  • 举报
回复
xml很简单啊,建个dataset,创建下字段.保存的时候就ds.WriteXml()写个文件,查询的时候ds.ReadXml().

里面就保存需要排除的IP,可以使用*表示一个区段什么的就行了.
子夜__ 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wuyq11 的回复:]

获取访问IP,地址转向
判断IP范围如Ip转long判断
System.Net.IPAddress ipaddress = System.Net.IPAddress.Parse("");
long ip= ipaddress.Address;

a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;
[/Quote]
转完之后效率比较高

以前写过类似的算法

LZ可以自己写个算法来判断 在Global里进行取 判断...

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧