我在服务器端使用JSP,并希望验证用户不能从两个不同的IP地址登录。如何进行此验证?
有些人说,由于涉及某些代理,可能无法从服务器端获取客户端IP地址。那么谷歌和Facebook是如何做到这一点的?在生产环境中是否可靠?请解释一下。谢谢!
获取IP地址很容易,只需使用ServletRequest#getRemoteAddr()。
但正如您已经注意到的那样,没有可靠的方法可以获取此信息 - 如果客户端使用代理,连接将似乎起源于该IP地址。我认为Facebook或Google也无法解决这个问题 - 这就是为什么您可以通过登录具有美国IP地址的代理/ssh隧道来访问仅限于美国的功能(例如,在Gmail中使用Google Voice)。
如果您只想防止用户同时从两个不同的IP地址登录,那么您需要跟踪他们当前会话(如果存在)的IP地址,并且要么
我不确定防止不同时间从不同IP地址登录可能会有什么价值,因为正在旅行或从一个网络移动到另一个网络的用户很可能会发生这种情况。