我知道直到几年前,有人可以设置一个虚假的无线 AP,并使用 SSLStrip 之类的东西来引诱受害者连接到主要网站的不安全版本,例如 Gmail、Facebook 等。尽管他们有 HSTS这仍然是可能的。但是,现在我看到这对于主要网站来说不再可能了。几年前发生了什么变化。HSTS 现在如何防止此类中间人攻击?
HSTS 如何阻止中间人攻击?
信息安全
网络
中间人
hsts
2021-08-21 01:13:30
2个回答
HSTS 标头通过指示浏览器始终向域发送 HTTPS(而不是 HTTP)请求来阻止中间人攻击,直到策略过期。因此,https://example.com即使用户单击了指向http://example.com.
HSTS 背后的逻辑自 2012 年在RFC中定义以来一直没有改变。改变的是今天几乎所有的浏览器都实现了它。请记住,执行此政策的是浏览器!我可以使用以下版本的支持它的报告浏览器:
- 互联网浏览器 11 (2015)
- 火狐 4 (2011)
- Chrome 3(2010,可能更早也支持)
- 野生动物园 7 (2013)
(在 RFC 发布之前,Firefox 和 Chrome 如何支持 HSTS 对我来说是个谜。)
因此,即使设置了标头,使用比这更旧的浏览器的人也不会受到保护。这可能解释了为什么您有这样的印象,即设置 HSTS 标头并没有用来帮助较早地对抗 SSLStrip。
HSTS 没有帮助的另一个原因可能是用户在攻击之前从未访问过该页面。如果浏览器从未见过标头,则无法强制执行。这可以通过预加载来解决。
SSLStrip 将https请求重写为 plain http,删除保护并允许窃听和修改。
具有 HSTS 保护的服务器将在 HTTPS 请求上设置一个标头,要求浏览器仅使用 HTTPS 联系该服务器:
Strict-Transport-Security: max-age=31536000
在这种情况下,浏览器将在一年内仅通过 HTTPS 连接到服务器,并将所有链接重写为 HTTPS(反向 SSLStrip)。
但有一个警告:客户端必须至少使用 HTTPS 访问过服务器一次。如果客户端仅通过 HTTP 连接,仍然会发生 MiTM,所有请求都可以更改,并且任何 HTTPS 链接或重定向都可以更改回 HTTP。但是一旦客户端使用 HTTPS 访问服务器,HSTS cookie 就会被设置,并且 SSLStrip MiTM 攻击不再可能。
其它你可能感兴趣的问题