从服务器端获取最终用户IP地址的可靠方法是什么?

时间:2011-03-26 00:27:28

标签: java jsp

我在服务器端使用JSP并想要验证,用户不能从两个不同的IP地址登录。进行此验证的方法是什么?

有些人说,由于涉及一些代理,客户端IP地址可能无法从服务器端获取。然后google和facebook如何做到这一点?这在生产环境中是否可靠?请解释。谢谢!

2 个答案:

答案 0 :(得分:3)

  

然后谷歌和Facebook如何做到这一点?

他们可能正在使用许多代理服务器在通过时添加到请求的X-Forwarded-For标头。

只有在代理人说实话的情况下,这才是可靠的。

答案 1 :(得分:2)

好吧,获取IP地址就像使用ServletRequest#getRemoteAddr()

一样简单

但正如您已经注意到的那样,没有办法可靠地实现这一点 - 如果客户端使用代理,则连接似乎来自该IP地址。我不相信Facebook或Google也可以解决这个问题 - 这就是为什么你可以通过具有美国IP地址的代理/ ssh隧道登录来访问仅限美国的功能(例如,Gmail中的Google Voice)。

如果您只想阻止用户同时从两个不同的IP地址登录,您需要做的就是跟踪当前会话(如果存在)的IP地址来源和

  • 停止第二次登录尝试,或
  • 第一次会议到期

我不确定在不同时间阻止从不同IP地址登录可能会有什么价值,因为这种情况很可能发生在四处旅行或从网络移动到网络的用户身上。