← 中文资源

简体中文版本

HSTS(HTTP 严格传输安全)

HSTS 要求浏览器在指定期限内仅通过 HTTPS 访问站点,阻止协议降级与 Cookie 泄露,首次访问需依赖 preload。

阅读英文原文

工作原理

服务器通过 HTTPS 返回 Strict-Transport-Security 响应头,浏览器在 max-age 指定的秒数内记住策略,并在发送请求前把 http:// 导航改写为 https://。includeSubDomains 将策略扩展到所有子域,preload 把域名加入浏览器内置列表,使策略在首次访问时也生效。

使用场景与权衡

所有公共 HTTPS 站点都应启用 HSTS,前提是全部子域支持 HTTPS 且重定向正确。只有确认域名及其子域永久支持 HTTPS 才申请 preload,因为移除需要数月并依赖浏览器更新。HSTS 具有粘性:错误的 max-age 或证书过期可能让用户无法点击继续访问,共享父域的内部主机名也可能受影响。应先使用较短的 max-age 验证,再逐步提高。

示例与误区

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

只在 HTTPS 响应中发送该头,并保留 HTTP 到 HTTPS 的 301 重定向,以兼容不支持 HSTS 的客户端。HSTS 本身不加密数据,加密由 TLS 完成;它也不保护首次请求,除非域名已加入 preload 列表。移除响应头不会立即撤销浏览器已保存的策略。相关概念包括 TLS、CSP 和安全 Cookie 属性。