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

Java 从服务器端获取最终用户IP地址的可靠方法是什么?,java,jsp,Java,Jsp,我在服务器端使用JSP,并希望验证这一点,用户不能从两个不同的IP地址登录。进行此验证的方法是什么 有些人说,由于涉及一些代理,客户端IP地址可能无法从服务器端获取。那么谷歌和facebook是如何做到这一点的呢?这在生产环境中可靠吗?请解释一下。谢谢大家! 获取IP地址和使用IP地址一样简单 但是正如您已经注意到的,没有可靠的方法来实现这一点-如果客户机使用代理,那么连接似乎起源于该IP地址。我不相信Facebook或谷歌也能解决这个问题——这就是为什么你可以通过一个具有美国IP地址的代理/s

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


有些人说,由于涉及一些代理,客户端IP地址可能无法从服务器端获取。那么谷歌和facebook是如何做到这一点的呢?这在生产环境中可靠吗?请解释一下。谢谢大家!

获取IP地址和使用IP地址一样简单

但是正如您已经注意到的,没有可靠的方法来实现这一点-如果客户机使用代理,那么连接似乎起源于该IP地址。我不相信Facebook或谷歌也能解决这个问题——这就是为什么你可以通过一个具有美国IP地址的代理/ssh隧道登录,访问美国独有的功能(例如,Gmail中的谷歌语音)

如果您只是想阻止一个用户同时从两个不同的IP地址登录,那么您所需要做的就是跟踪他们当前会话(如果存在)的IP地址来源以及其中之一

  • 停止第二次登录尝试,或
  • 终止第一个会话
我不确定在不同的时间阻止来自不同IP地址的登录有什么价值,因为这很可能发生在四处旅行或从一个网络移动到另一个网络的用户身上

那么谷歌和Facebook是如何做到的呢

他们可能正在使用许多代理服务器在发送请求时添加到请求中的头


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

通常的要求是禁止从多个IP地址同时登录。用户很少同时从两个IP地址访问网站。(尽管我一直都在用手机和电脑上网;有很多网站我都懒得注销,而且我确信这两种浏览器都有会话。)