您现在的位置是:休闲 >>正文

修改asp限制IP访问

休闲5人已围观

简介ASP站点的IP限制,说白了就是在服务器端写几行代码,把不想要的访客挡在门外。这事我干过不下二十次,每次都有新坑。别急着找什么IIS插件,代码才是最快的。 最简单的办法,在global.asa里塞一段 ...

ASP站点的修改p限IP限制,说白了就是修改p限在服务器端写几行代码,把不想要的修改p限访客挡在门外。这事我干过不下二十次,修改p限每次都有新坑。修改p限别急着找什么IIS插件,修改p限代码才是修改p限最快的。

最简单的修改p限办法,在global.asa里塞一段Session判断。修改p限但别高兴太早,修改p限Session这东西有超时,修改p限用户刷新几下就可能被误杀。修改p限我见过一个老兄,修改p限把限制写在Session_OnStart里,修改p限结果自己公司内部员工全被踢出去,修改p限因为他们的IP段正好在封禁列表里。那场面,IT部门电话被打爆。

真正靠谱的做法,是直接在ASP页面顶部写判断。拿Request.ServerVariables("REMOTE_ADDR")取客户端IP,然后跟一个数组比对。代码长这样:

<% Dim blockedIPs(3) blockedIPs(0) = "192.168.1.100" blockedIPs(1) = "10.0.0.5" blockedIPs(2) = "172.16.3.8" Dim userIP userIP = Request.ServerVariables("REMOTE_ADDR") Dim isBlocked isBlocked = False For i = 0 To UBound(blockedIPs) If userIP = blockedIPs(i) Then isBlocked = True Exit For End If Next If isBlocked Then Response.Status = "403 Forbidden" Response.End End If %>

这段代码得放在每个需要保护的页面最顶上。但有个问题——你不可能每个页面都手动加一遍。维护起来想死。后来我学聪明了,把这段逻辑写成一个独立的block.asp文件,然后每个页面用<!--#include file="block.asp"-->引进来。改一处,全站生效。

你以为这就完了?天真。IP限制最头疼的是代理服务器。用户通过代理访问,REMOTE_ADDR拿到的是代理的IP,不是真实用户IP。这时候得检查HTTP_X_FORWARDED_FOR头。但那个头可以伪造,懂点技术的人随便改。我见过一个案例,攻击者故意在请求里加个假X-Forwarded-For,把IP伪装成127.0.0.1,结果绕过了限制直接进了后台。那叫一个惨。

所以我的建议是,如果你面对的是内网用户,直接用REMOTE_ADDR就够了,别整那些花活。如果是公网环境,老老实实用防火墙或者IIS的IP限制功能,别在ASP层做安全边界。ASP这层做IP限制,顶多算个辅助手段,防君子不防小人。

还有个细节,IPv6。现在不少公司内网已经上了IPv6,REMOTE_ADDR返回的是一长串十六进制加冒号的东西。你之前写的封禁列表全是IPv4格式,比对永远不匹配。我吃过这个亏,排查了半天才发现是IPv6地址格式问题。后来写了个函数,同时处理两种格式的IP,把IPv6的压缩格式和完整格式都转成标准字符串再比较。

最后说个实用技巧——不要只封单个IP,要支持IP段。比如封192.168.1.0到192.168.1.255,用Left()函数截取前几段做比较就行。但要注意,IPv6的段划分方式和IPv4完全不一样,截取逻辑得分开写。代码写完后,拿几个真实IP测一下边界条件,比如.0和.255这种极端值,确保没漏网之鱼。

改完代码记得重启IIS的应用程序池,不然缓存里的旧代码还会执行。我见过有人改完代码不重启,测试半天发现没生效,最后发现是缓存搞的鬼。这坑我替你踩过了,你直接绕过去就行。

Tags:

相关文章

  • 国内b2c电商平台有哪些

    休闲

    国内B2C电商平台,掰着手指头数,能叫上名字的至少有二十家,但真正在市场上搅动风云的,其实就那三五家。淘宝天猫、京东、拼多多,这三个巨头把市场分走了八成以上。剩下的一堆,要么在垂直领域深耕,要么在夹缝 ...

    【休闲】

    阅读更多
  • 千图网素材

    休闲

    千图网素材这事儿,我琢磨了挺久。不是因为它多复杂,恰恰相反,它简单到让人忽略——可正是这份简单,撑起了无数设计师的日常。 打开千图网,搜索框里敲下“科技感背景”,出来一万多张图。这数字本身没意义,有意 ...

    【休闲】

    阅读更多
  • 360资产与漏洞管理

    休闲

    某天凌晨两点,某家互联网公司的安全运维盯着屏幕,手里那杯咖啡已经凉透了。他刚收到一条告警:一个被遗忘的测试服务器正对公网开放着远程桌面端口。这台机器没有打补丁,没有防火墙规则,甚至没人记得它是谁部署的 ...

    【休闲】

    阅读更多


友情链接