有人告诉我,在 URL(如 )中显示您的 IP 地址http://192.0.2.34/default.html
更容易被破解。真的吗?我可以追踪任何域名并获得它的 IP 号码。
在 URL 中显示您的 IP 地址是一种不好的做法吗?
更容易破解?不。更容易 DoS?潜在的。在 DNS 条目中使用 IP 地址而不是主机名意味着您放弃了一层非常有益的路由灵活性。
例如,如果恶意软件在 DoS 攻击中以您的 IP 地址为目标,如果您使用的是域名,则您切换站点的 IP 地址和 DNS 记录,攻击就结束了,而您的用户却不知道其中的区别。但是,如果您的用户直接向您的 IP 发出请求,那不是一个选择。除非您想在此过程中给您的用户带来不便(并且可能会失去),否则您会被绑定到该 IP。
通常,如果您的网站是可访问的,因为http://1.2.3.4/
这意味着它没有对Host:
标题实施任何限制。这意味着您不仅可以通过 IP 地址访问它,还可以通过任何碰巧解析到该地址的主机名来访问它——包括攻击者注册并指向它的域。
这会引发DNS 重新绑定攻击,攻击者通过在自己的服务器和您的服务器之间切换主机名的 IP 地址来规避同源策略,以及指向attacker.com
您的服务然后sub.attacker.com
指向自己的服务的 cookie 攻击,从而允许 cookie从子域中读取。
这些风险有多大取决于您的应用程序的设计和目的。它最有可能在非公共应用程序上被利用,在这些应用程序中,您具有基于私有 IP 地址范围或 SSO 的隐式授权(Windows auth 等);在这种情况下,应用程序可能会在没有用户交互的情况下生成敏感数据,并且这些数据可能对此类攻击者可见。
在不知道这一点的情况下,最安全的方法是限制Host:
HTTP 请求的标头可以包含的内容。这通常意味着设置基于主机的虚拟服务器并只允许已知良好的主机名访问您的 Web 应用程序,在这种情况下,攻击者主机名和直接到 IP 地址的访问等都会访问错误页面。
但是,如果您真的想要,您当然可以提出一个只允许 IP 地址而不是任何其他主机名的自定义检查 - 所以不,这不是 IP 地址本身的问题。
和/或只使用 HTTPS,它提供了更多无懈可击的保证,确保您访问的是正确的服务器。
与其他答案相反,我认为使用 ip 地址而不是主机名是不好的做法,原因有很多。最为显着地:
普通用户很难验证他们正在与正确的服务而不是网络钓鱼站点交谈:他们必须记住一个大数字而不是名称。
使用 ip-addresses 意味着您不能将 https 与有效证书一起使用。
IP 地址可能会因多种原因被重新分配,但并非所有这些都在您的控制之下。因此,其他人可能会获得您当前的 IP 地址。
处理大量流量(例如 DDoS 攻击)的常用方法是将 dns 条目指向一个巨大的分布式缓存网络。通过使用 IP 地址,您排除了这种有效且相对便宜的选择。
使用 IP 地址而不是域并不是一个安全的坏习惯,因为攻击者可以很容易地得到它。
一个简单的终端命令nslookup
可以检查给定域解析的任何 IP 地址。此外,如果域连接到单个 IP 地址,ping
则同样可以完成这项工作。
以一种或另一种方式提供您的 [网站] 地址并不会使其变得更加“可破解”,而它可能已经如此。