我想在Java Web服务之一中支持基于IP的白名单。为了实现这一点,我编写了一个servlet过滤器,在其中我正在验证remote-machine-ip是否属于列入白名单的ips。要确定remote-machine-ip,我正在使用以下代码:-
String ipAddress = httpServletRequest.getRemoteAddr();
我想知道是否有一种方法可以使攻击者无需进入远程计算机就可以模仿远程IP。如果是,那么是否有更好的安全方法来确定远程IP?
答案 0 :(得分:2)
有一种方法,但这不是一个简单的方法,有关更多详细信息,请参见此answer。
请记住,如果将应用程序部署在代理或CDN后面,httpServletRequest.getRemoteAddr()
并不合适。在这种情况下,您必须检查X-FORWARDED-FOR
标头,然后轻松进行伪造。