
当应用程序部署在负载均衡器或代理服务器后面时,客户端的真实 IP 地址会被这些组件修改。此时,可以通过检查 X-Forwarded-For 头部来获取客户端的真实 IP 地址。
Java Servlet API 提供 request.getRemoteAddr() 和 request.getRemoteHost() 方法,可以获取客户端的 IP 地址和主机名。这些方法可以用来验证客户端的 IP 地址是否合法。
除 X-Forwarded-For,一些其他 HTTP 头部如 X-Real-IP 和 X-Client-IP 也可用于获取客户端的真实 IP 地址。应用程序可以检查这些头部,并与 request.getRemoteAddr() 进行比对,以确保 IP 地址的合法性。
在应用程序部署的网络环境中设置适当的防火墙规则,可以有效阻挡一些恶意的 IP 地址访问。这种方法可以在网络层面上预防 IP 地址伪造的问题。
应用程序对客户端有严格的身份验证要求,可以使用 SSL/TLS 客户端证书进行验证。这种方法可以确保客户端的身份是可信的,从而防止 IP 地址被伪造。