在ASP.NET中防弹检测用户的IP地址

时间:2010-09-29 12:43:20

标签: c# asp.net

我尝试从下面提到的方法中获取ip

HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] & 
Request.UserHostAddress & Request.ServerVariables["REMOTE_ADDR"]

问题在于Request.ServerVariables["REMOTE_ADDR"]返回代理服务器ip和 HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]可以被篡改我想要一个万无一失的获取客户端ip的方法,这个方法无法被篡改,在这方面的任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:9)

  

我想要一个万无一失的获取客户端ip的方法,这种方法无法被篡改

不存在。遗憾。

  

问题是Request.ServerVariables [“REMOTE_ADDR”]返回代理服务器ip

假设用户位于公司代理服务器后面。您将获得此代理IP,其中所有意图和目的 是最接近用户IP的 。我的意思是,如果你得到了用户的最终内部IP,如192.168.0.15对你有什么用处?

答案 1 :(得分:2)

除了@Developer Art之外,还要考虑互联网上的许多IP地址都是从私有类“C”地址代理的。例如,虽然我家的有线调制解调器有一个公共IP地址,但我的路由器提供了内部C类地址的代理(例如192.168.1.123)。

最后......鉴于192.和10.地址是大多数消费者路由器的标准,大多数用户将使用以这两个号码中的一个开头的地址,并且不会衡量,是独一无二的。