使用 lvh.me 而不是 localhost 进行测试是否安全?

It is safe to use lvh.me instead of localhost for testing?

我想知道在本地开发时使用 lvh.me 代替 localhost 是否安全,因为 lvh.me 必须解析并且 IP 可能会随时间变化。

使用 lvh.me 的目的是能够处理子域,因为 localhost 没有顶级域。

除非您是 lvh.me 的维护者,否则您无法确定它不会消失或更改 lvh.me 的 RR。

您可以使用 localhost.localdomain 而不是 localhost,方法是在 hosts 文件中添加以下行:

127.0.0.1 localhost localhost.localdomain
::1 localhost localhost.localdomain

这比使用 lvh.me 更好,因为:

  • 您在开发时可能并不总是能够访问 DNS 解析器
  • lvm.me 不使用与您的本地主机对应的本地 IPv6 地址进行应答,仅使用 IPv4 地址 127.0.0.1
  • 出于安全目的(避免泄露内部信息)
  • ,一些 ISP 的 DNS 解析器阻止了对应于私有地址 space 的答案

既然您在评论中说您不想更新主机文件,您就无法确定 lvh.me 将始终为您的开发人员工作。因此,回答你的问题:它不安全。您可以为自己注册一个域,但正如我之前所说,某些解析器会阻止与私有地址对应的答案 space.

您只需将浏览器指向 myproject.apps.localhostwww.example.net.localhost

lvh.melocaltest.me 等服务只是 DNS 服务,因此您向它们发布的唯一信息就是名称或您正在使用的主机。它们 可以 随时解析任何 IP,但前提是您仅将它们用于使用虚假数据进行本地测试,这样您就安全了。

但是如果他们关闭了服务怎么办?同样,由于您应该只将它们用于本地测试,您将立即获得反馈,并且可以轻松地返回使用 localhost.

否,因为截至目前 http://lvh.me 有一个过期的域名。

lvh.me 未在 2021 年 6 月 7 日解析为 127.0.0.1。根据您无法控制的 DNS 名称,会带来这种风险。尽管域名在当天结束时已恢复,但此答案提供了一些替代方案,以依赖于其他人的 DNS 配置。

Firefox 和 Google Chrome 现在都将 *.localhost 名称视为 localhost。他们还对端口号做了正确的事情。

自己测试一下,启动本地http服务器监听8000端口:

python -m http.server 8000

然后试试这些链接

这个技巧对命令行程序没有帮助。例如,此命令将无法解析主机:

curl http://example.localhost:8000

Curl 本身提供了许多其他技巧,如果您需要在命令行上自定义子域,这些技巧可能对您有用。例如,这个技巧有效:

curl --resolve example.localhost:127.0.0.1 \
  http://example.localhost:8000

同样值得注意的是,类似的服务仍然可用。

https://readme.localtest.me

最后一个替代方法是配置您自己的通配符 CNAME 以解析为 127.0.0.1。例如:

*.my.example.com.   1800    IN  CNAME   my.example.com.
my.example.com.     1800    IN  A       127.0.0.1

如果您不想重写代码,快速解决方法是打开主机文件

sudo nano /etc/hosts

粘贴(将 yoursubdomain 替换为您调用的子域)

127.0.0.1 yoursubdomain.lvh.me

推送ctrl-x 然后 y 然后 enter

那你就可以开始了

这取决于你在做什么。如果是本地开发那么大多数时候是的,如果你想检查你总是可以解决它:

对于 linux 或 osx 你可以 运行 在终端中这样做:

dig X.nip.io

它应该总是 return 127.0.0.1。因此,虽然这不是执行此操作的“最安全”方法(因为您不管理 DNS 本身),但我仍然经常在必要时将其用于某种解析 TLD。以下是一些仍然有效且信誉良好的网站:

https://nip.io/

https://sslip.io/