当我开发一个 web 应用程序时,比如说一个 Django 站点,我在本地运行它并且通常在http://localhost访问它。
我认为这本质上是安全的,因为我假设 localhost 只能在本地访问。但是,我发现即使使用自签名 HTTPS 证书运行本地 Web 服务器(Apache、Nginx ...)也无济于事,因为 localhost 并不真正需要是本地的:
在实证测试中,我们已经看到多个解析器...向网络发送 localhost 查询...结果访问“ https://localhost ”,例如,在敌对 WiFi 接入点(例如您的咖啡店)上可以被网络攻击者拦截并重定向到他们选择的站点(或证书)。(在电子邮件链“基线要求例外,第 7.1.4.2.1 节”。)
如果我正在开发一个 webapp,我需要在本地运行它并通过浏览器访问它。有时我需要在有互联网连接的咖啡店做这件事。如果不是本地主机,我应该使用什么接入点?
笔记
我的一些桌面应用程序还通过 HTTP 在其他端口公开自己,例如http://localhost:9000。大概我也不应该在咖啡店访问那些?