1

某些应用程序仅通过接受来自某些 IP 的请求来提供安全性。这是使该应用程序安全的好方法吗?有没有办法在请求期间操纵这个引荐来源 IP?

getRemoteAddr、getRemoteHost 和 getRemotePort

发出请求时有什么方法可以设置上述值吗?

4

1 回答 1

2

是的,可以“欺骗”数据包的源 IP,以使请求看起来来自与实际不同的 IP 地址。但是,这不是问题,因为如果 IP 地址被欺骗,TCP 的三次握手将无法完成,除了少数例外情况(例如攻击者嗅探数据包并在数据包通过线路时生成响应)。不过一般来说,很难做到。

然而,这不是好的安全实践,即使它通常是可靠的。原因是任何人都可以假设 IP 地址,并且由于 NAT 和防火墙等技术,它们在数据包中经常更改。

考虑一下,如果您有两个使用 NAT 的专用网络上的用户,并且他们都同时向您的服务器发出请求,那么您的服务器将看到 IP 地址相同,但源端口不同。允许路由正确发生的区别因素是源端口,而不是 IP 地址。为了降低可靠性,源端口将在每个新请求上发生变化,这可能在单个 HTTP 会话期间发生数十次。

话虽如此,IP过滤还是有一些好处的。您可以通过 IP 过滤使来自某个国家或地区的人更难连接。这不应该是您唯一的安全措施,但它可以提供帮助,因为从不同范围获取有效 IP 地址通常并非易事。例如,某些组织会默认阻止所有非美国 IP。这与用户帐户一起使用。这使得非本地攻击者更难到达服务器。

于 2013-03-18T20:46:04.400 回答