我正在检查维基百科上的文章主机文件,我发现了这个:
通过将不需要的内容重定向到本地主机 (127.0.0.1) 来阻止对服务器的访问可能会产生安全隐患。由于 127.0.0.1 只能由主机本身访问,因此连接可能是受信任的。要跟踪的链接可能会被精心设计为对本地主机发起攻击。
虽然它没有引用任何参考资料,但我想知道这是不是真的。
我考虑过使用主机文件来阻止一些网络错误和跟踪器。这是否安全?
我正在检查维基百科上的文章主机文件,我发现了这个:
通过将不需要的内容重定向到本地主机 (127.0.0.1) 来阻止对服务器的访问可能会产生安全隐患。由于 127.0.0.1 只能由主机本身访问,因此连接可能是受信任的。要跟踪的链接可能会被精心设计为对本地主机发起攻击。
虽然它没有引用任何参考资料,但我想知道这是不是真的。
我考虑过使用主机文件来阻止一些网络错误和跟踪器。这是否安全?
想象一下,您正在本地机器上运行网络服务(例如 HTTP)。这绑定到环回接口 (127.0.0.1) 和面向 Internet 的接口 (80.1.1.1)。
现在假设您的计算机上有一个脚本,攻击者知道该脚本可用于执行管理任务,但前提是由管理员执行。
假设您的脚本仅假定访问者是从服务器本身连接的管理员。可以使用 GET 变量调用管理函数,例如:http : //127.0.0.1/?droptable=foo&setpwd=bar。
如果用户尝试从 Internet 执行此操作,脚本可以看到正在连接的用户位于外部 IP 上,并且会返回 HTTP 403。
现在你正在你的服务器上浏览互联网(你真傻)。您单击了一个攻击者链接,其域名与一些可疑的东西相关联,因此它在您的主机文件中。现在,该链接不再将您带到http://blockeddomain.com/?droptable=foo&setpwd=bar,而是您自己的主机文件确保http://127.0.0.1/?droptable=foo&setpwd=bar被加载。
您的数据库表被删除,攻击者破坏了您的身份验证机制。
当然,这是一个非常基本的示例,需要做出许多假设。然而,这是一种现实世界的可能性,即这种设置如何让您头疼。
如果您是自己/etc/hosts设置阻止特定网络错误/跟踪器的人,我认为没有任何危险;然而,我可以很容易地想象一个攻击者可以/etc/hosts用来重定向到 localhost 来做一些恶意事情的场景。
例如,假设攻击者设计了一个网站的恶意克隆(如amazon.com)并将其安装在本地网络服务器上并编辑 /etc/hosts 以重定向到 amazon.com 到 localhost。访问 amazon.com 的那台计算机上的用户不会知道其中的区别,并且可能会将机密信息输入到在 localhost 上运行的恶意 Web 应用程序(可能会将机密信息发送到其他地方)。
我不会太担心重定向到 localhost 被“信任”;使用客户的 IP 地址作为身份验证的手段来授予他们更改信息的权限是 Web 应用程序设计中的错误。
也许这是一个更好的解决方案。而不是127.0.0.1在主机文件中使用,净效果不一样 - 但更安全 - 使用0.0.0.0