题
它是可能的,如果传入的请求正在通过代理服务器以检测?如果Web应用程序通过IP地址“禁止”的用户,他们可以通过使用代理服务器绕过这一点。这只是其中的一个理由阻止这些请求。如何才能实现这一目标?
解决方案
IMHO没有100%可靠的方式来实现这一点,但任何以下标头的存在是一个强烈指示该请求已被从代理服务器路由:
via:
forwarded:
x-forwarded-for:
client-ip:
您也可以查找的代理的或 PXY 的客户端的域名。
其他提示
如果代理服务器的设置是否正确,避免代理服务器的检测,你将无法分辨。
大多数代理服务器供应集作为其他提及,但这些不存在于代理意图完全隐藏用户。
您需要采用多种检测方法,如饼干,代理头检测,或许知识产权启发式检测这种情况。请查看 http://www.osix.net/modules/article/?id=765 ,获取有关这一情况的一些信息。也可以考虑使用代理黑名单 - 它们是由许多组织出版的
然而,没有什么是100%确定。您可以采用上述策略,以避免最简单的情况,但在一天结束的时候它只是一个系列形成了TCP / IP的交易数据包,以及TCP / IP协议没有今天的安全,认证等理念开发
记请,许多企业部署全公司范围内以各种理由代理,如果你简单地阻止代理作为一般规则,你一定限制你的观众,可能不总是可取的。然而,这些代理通常用适当的标题宣布自己 - 你最终可能会妨碍合法的用户,而不是用户谁是善于隐藏自己。
- 亚当
做了一些挖这个的我的领域得到了谷歌的AppSpot.com与注入到它(谷歌感谢)。漂亮的铁杆色情广告托管了后
从这个隔空叶htaccess的想法我做以下,这似乎是工作。我添加Appspot上其注入一个HTTP_X_APPENGINE_COUNTRY ServerVariable特定规则。
Dim varys As New List(Of String)
varys.Add("VIA")
varys.Add("FORWARDED")
varys.Add("USERAGENT_VIA")
varys.Add("X_FORWARDED_FOR")
varys.Add("PROXY_CONNECTION")
varys.Add("XPROXY_CONNECTION")
varys.Add("HTTP_PC_REMOTE_ADDR")
varys.Add("HTTP_CLIENT_IP")
varys.Add("HTTP_X_APPENGINE_COUNTRY")
For Each vary As String In varys
If Not String.IsNullOrEmpty(HttpContext.Current.Request.Headers(vary)) Then HttpContext.Current.Response.Redirect("http://www.your-real-domain.com")
Next
可以寻找这些标头在请求对象,并相应地决定请求是否是经由代理/不
1)通过 2)X - 转发,对于
请注意,这不是100%肯定拍摄技巧,依靠这些代理服务器是否选择添加上述标题。