这似乎是一个愚蠢的问题,但我想知道:
- 如何在不强制将用户重定向到 HTTPS 的情况下部署 HSTS?
- 如何仍然从与使用 HSTS 的域相同的域提供 HTTP 内容? (整个网站或混合内容)
- 为什么会有人这样做?
我正在阅读 from the EFF site看起来那已经完成了:
We recently enabled HSTS for eff.org. It took less than an hour to set up, and we found a way to do it without forcibly redirecting users to HTTPS, so we can state an unequivocal preference for HTTPS access while still making the site available in HTTP. It worked like a charm and a significant fraction of our users are now automatically accessing our site in HTTPS, perhaps without even knowing it.
据我所知,HSTS 通过发送 HTTP header 来工作:
Strict-Transport-Security: max-age=31536000
因此,如果我访问 https://example.net/ 上的页面如果发送该 header ,则在接下来的 31536000 秒内对域 example.net 的所有 future 请求都将使用 HTTPS,如果(响应?)是 HTTP,则浏览器将显示巨大的红色警告。
有人可以为我澄清一下吗?我对 HSTS 的理解准确吗?还是我遗漏了什么?
最佳答案
HSTS header 应仅通过 HTTPS 发布,并且仅在通过 HTTPS 接收时由用户代理强制执行。用户代理应该忽略通过 HTTP 发送的 HSTS header ,因为攻击者可能会恶意注入(inject)它。
这意味着站点可以继续通过 HTTP 提供服务,用户可以根据自己的选择继续通过 HTTP 浏览。但是,如果他们手动将 https://插入地址栏,他们将收到 HSTS header ,然后用户代理会将其视为 HSTS 主机。
这是一种逐步引入强制 HTTPS 流量的好方法,而不是在第一天就强制使用。随着用户意识到安全选项,HTTPS 流量将增加并保持不变,这要归功于 HSTS。也许 EFF 正在逐步引入它,并且可能有一天一旦他们对能够容纳它感到满意,就可以轻弹大“HTTPS 开关”。
关于security - 在不强制重定向到 HTTPS 的情况下启用 HSTS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18545396/