我们的 ISP 还托管我们的外部 DNS。默认情况下,它们包含 localhost 的条目。
例如:localhost.example.com。86400 在 127.0.0.1
当我要求他们删除它时,他们让我很难过,并说这正是 Bind 的工作方式。
我试图对为什么我可能想要包含它进行一些研究,但我找不到太多。我确实发现至少有一个地方认为它可能是 XSS 攻击媒介。它看起来确实很常见,所以我从 alexa 查找了前 20 个网站域,大多数都没有这样的条目,但有几个有。其他一些人有一个条目,但不是指向 127.0.0.1,而是指向另一个世界可路由 IP 地址。
所以无论如何,我为什么要在我的域的区域中拥有 locahost?他们没有它有什么问题吗?有没有关于这方面的最佳实践?它确实是我不知道的默认绑定事情吗?
谢谢
localhost.example.com
有时包含在内部 DNS 服务器中,以防止“localhost”请求泄漏到 Internet(对于 John Smithhttp://localhost/
在他的浏览器中键入的情况,并且无论出于何种原因,他的解析器没有在 hosts 文件中查找,附加他的搜索路径(example.com
) & 开始询问名称服务器解析到什么)。您不必拥有 localhost 条目(如果您的 ISP 认为这是“BIND 的工作方式”,他们要么被误导,要么是白痴:BIND 服务于区域文件中的内容,如果他们删除该
localhost
行,它将停止提供该文件记录)。作为一个免费的例子,localhost.google.com
它不能解决,我敢打赌该域的 NS 正在运行 BIND。XSS 向量是我从未想到过的,但它令人担忧:
localhost
在您的公共 DNS 中有一个条目意味着任何被黑客入侵的机器都可能“在您的域中”(通过在 127.0.0.1 上运行网络服务器)并且可能会这样做各种讨厌的东西。可能是摆脱条目的充分理由。假设您的内部名称解析正在正确处理名称解析,则任何对 localhost 的 DNS 请求都不应发送给您的外部 DNS 提供商,因此这根本不是问题。
有人会这样做的一个原因,我能想到的,是如果有人曾经使用过一个 Web 创作工具,它搞砸了对 http://localhost 的大量绝对引用,但假设你的ISP 也在他们的 DNS 盒子上托管,而且是一个很长的目标。
但是,RFC 1537 确实指定:
所以严格来说,您的 ISP 似乎包含 localhost 是正确的,但使用完全限定名称是不正确的。
我不确定重点是什么...默认情况下,主机文件将覆盖外部地址,该文件几乎总是将 localhost 映射到 127.0.0.1。
不过,默认的 BIND 区域文件确实包含 localhost 区域。从来没有真正考虑过。