我想禁止代理用户访问我的网站,该怎么办? - 博问- 博客园社区

通常,HTTP Proxy会更改或者添加以下的HTTP请求变量:

 REMOTE_ADDR

HTTP_VIA

HTTP_X_FORWARDED_FOR

当没有使用HTTP Proxy的时候,这几个变量的值应该如下:

REMOTE_ADDR: HTTP Client(浏览器)所在机器的IP

 HTTP_VIA: 无定义,也就是说不会在HTTP请求中出现

HTTP_X_FORWARDED_FOR: 无定义,

同上 当你使用了普通配置的HTTP Proxy的时候,这几个变量就变成下面的样子了:

 REMOTE_ADDR: HTTP Proxy's IP (不变的话就容易判断了,呵呵)

HTTP_VIA: HTTP Proxy's IP or HTTP Proxy' ServerName或HTTP协议版本号或HTTP Proxy版本信息(有什么办法呢,这可没有RFC定义的说,不同的厂商做出来的HTTP Proxy这个字段的东东是不一样的说)

HTTP_X_FORWARDED_FOR: HTTP Client(浏览器)所在机器的IP (Squid使用,ISA不支持此字段) 其实分析到这里,偶们的目的已经可以实现了。只要发现某个HTTP请求头部带有HTTP_VIA或HTTP_X_FORWARDED_FOR,那么这个发起HTTP请求的IP必定是个HTTP Proxy。

 

所以呢:可以这样做,在httpmodule或global中过滤:

if((HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]!=null 
            
&& HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"!=String.Empty) )

httpContext.Current.Response.End();

ps:这个是一般的做法,不过呢如果代理服务器没有修改http 请求变量,那个我们就真的没有办法了,不过这种情况相当的少了,这样就行了~~

   您需要以后才能回答!
郑重声明:资讯 【我想禁止代理用户访问我的网站,该怎么办? - 博问- 博客园社区】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——