浏览器是否有一个包含应该加密的站点的列表?
是否可以通过向用户提供 http 站点而不是 https 站点来执行中间人攻击?这样服务器就不需要提供证书。
它不会在浏览器中显示为安全站点,但我认为大多数人不会注意到它。它不会警告用户,因为有些合法网站不使用 https。
这样的攻击是否可能,或者浏览器是否注意到该站点应该使用 https 但没有?
浏览器是否有一个包含应该加密的站点的列表?
是否可以通过向用户提供 http 站点而不是 https 站点来执行中间人攻击?这样服务器就不需要提供证书。
它不会在浏览器中显示为安全站点,但我认为大多数人不会注意到它。它不会警告用户,因为有些合法网站不使用 https。
这样的攻击是否可能,或者浏览器是否注意到该站点应该使用 https 但没有?
简短的回答:他们知道的数量非常有限。
引入HTTP Strict Transport Security是为了更好地保证网站在运营商指定时通过 HTTPS 提供服务。
这适用于您最近访问过的网站,因为您的浏览器会记住他们的 HSTS 政策并拒绝纯文本连接。
例如,如果您从一个不受信任的网络访问您(以前从家里访问过的)银行的网站,而中间恰好有人试图将连接降级为纯 HTTP,您的浏览器将拒绝连接,因为它会记住该网站的安全策略.
如果您以前没有访问过该站点,那么中间的人不仅需要降低连接安全性,还需要Strict-Transport-Security
从响应中删除 HSTS 标头 ( )。这并不难。
您发现的问题是主要限制:如果您在第一次访问期间成为降级攻击的受害者会发生什么。
浏览器实施的一种解决方案是打包已知需要 HTTPS 的流行网站的“预加载 HSTS 列表” 。显然这不可能是全面的,即使有列表,攻击者仍然可以在稍微相关的 DNS 名称上设置安全降级代理。
您可以在hstspreload.org提交域以包含在 HSTS 预加载列表中。
安全研究员Moxie Marlinspike在 2009 年使用他创建的名为“sslstrip”的工具演示了这种类型的攻击。请参阅https://www.youtube.com/watch?v=ibF36Yyeehw(大约 8:34 开始)。
为了防止这种类型的攻击,我们现在有了HTTP 严格传输安全(HSTS)。站点可以在响应中包含 HSTS 标头,以通知浏览器将来始终通过 HTTPS 连接到站点。在从站点接收到 HSTS 响应标头后,浏览器会将站点添加到它维护的“仅 HTTPS”列表中,这样以后,浏览器将仅通过 HTTPS 连接到该站点。因此,对于已实施 HSTS 的站点,sslstrip 攻击可能会在与该站点的第一个连接上成功,但 HSTS 会阻止对后续连接的 sslstrip 攻击。
为了防止对站点的第一次连接进行 sslstrip 攻击,站点操作员可以将站点包含在HSTS 预加载列表中。HSTS 预加载列表随某些浏览器(例如 Chrome)一起提供,因此浏览器知道仅通过 HTTPS 连接到这些站点,甚至在第一次连接之前。