一些应用程序仅通过接受来自特定IP的请求来提供安全性。这是一个保护应用安全的好方法吗?在请求期间,有没有办法操作这个referrer IP?
getRemoteAddr、getRemoteHost和getRemotePort
有没有办法在发出请求时设置上面的值?
发布于 2013-03-19 04:46:04
是的,可以“欺骗”数据包的源IP,使请求看起来像是来自不同的IP地址。但是,这不是一个问题,因为如果IP地址被欺骗,TCP的三次握手将不会完成,但有几个例外(例如,攻击者嗅探数据包并在数据包通过线路时生成响应)。一般来说,这是很难做到的。
然而,这并不是一个好的安全实践,尽管它通常是可靠的。原因是任何人都可以假定IP地址,并且由于NAT和防火墙等技术,这些地址经常在数据包中更改。
假设您在使用NAT的同一专用网络上有两个用户,并且他们同时向您的服务器发出请求,则您的服务器将看到相同的IP地址,但源端口不同。允许正确进行路由的区别因素是源端口,而不是IP地址。为了使这一点更不可靠,源端口将在每个新请求时更改,这在单个HTTP会话期间可能会发生数十次。
话虽如此,IP过滤还是有一些好处的。您可以通过IP过滤使来自某个国家或地区的用户更难连接。这不应该是您唯一的安全性,但它可能会有所帮助,因为从不同的范围获取有效的IP地址通常很重要。例如,一些组织将在默认情况下阻止所有非美国的IP。这与用户帐户一起使用。这使得非本地攻击者更难到达服务器。
https://stackoverflow.com/questions/15483615
复制相似问题