gpt4 book ai didi

java - 如何区分已知IP和未知IP

转载 作者:行者123 更新时间:2023-12-02 00:03:10 25 4
gpt4 key购买 nike

我需要开发一个Web应用程序,可以通过在服务器端存储一对(源IP,有效用户名)来识别已知机器和未知机器,以前的登录是成功的。当任何人从未知机器登录时如何被识别。web应用程序托管在本地主机中。是否可以获取客户端 IP。检索客户端 IP 时,我只得到 127.0.0.1,这是 localhost。有人有任何想法吗...?

最佳答案

简单来说,您无法始终获得真实的客户端 IP 地址。

如果客户端有自己的 IP 地址并直接连接到服务器,则 HttpServletRequest.getRemoteAddr() 应返回该地址。然而:

  • 如果客户端的请求通过代理或反向代理到达服务器,则 getRemoteAddr() 将返回第一个上游代理地址。

  • 如果客户端将服务器寻址为 localhost,则请求将来自 localhost。

  • 如果客户端位于 NAT 网关或 IPv4 <-> IPv6 网桥后面,您可能会看到网关或网桥的 IP 地址。

还有一个问题,就是IP地址可能被欺骗。

简而言之,依赖了解真实客户端 IP 地址的安全方案通常会出现问题。

<小时/>

如果您的问题是由于反向代理造成的(看到 127.0.0.1 就意味着这一点),您可以让反向代理向请求添加一个请求 header ,以说明它看到的远程 IP 地址。然后服务器需要使用该 header 而不是 getRemoteAddr()。但是,如果代理没有看到真实的客户端 IP 地址,这将无济于事。

关于java - 如何区分已知IP和未知IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14434890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com