HSTS(HTTP Strict Transport Security)是HTTP响应头,指示浏览器在指定时间内只通过HTTPS访问该网站,防止用户因手动输入或链接跳转而降级到不安全的HTTP连接。 协议降级攻击的场景是攻击者在用户和服务器之间进行中间人攻击,当用户通过HTTP访问网站时攻击者拦截请求并冒充服务器,或当用户通过HTTPS访问时攻击者将HTTPS链接篡改为HTTP再进行中间人劫持。HSTS通过在HTTPS响应中设置Strict-Transport-Security头部,告知浏览器在max-age指定的时间内该网站必须使用HTTPS。浏览器收到HSTS后会将域名加入HSTS列表,之后即使用户输入http://或点击http链接,浏览器也会自动将其转换为https://发起请求。HSTS还支持includeSubDomains参数将策略扩展到所有子域名,以及preload参数允许将域名提交到浏览器内置的HSTS预载列表。预载列表使得即使用户首次访问该域名也直接使用HTTPS,避免了首次访问时HSTS头部还未生效的窗口期。部署HSTS前需确保所有页面和资源都已支持HTTPS否则可能导致部分资源无法加载。