HSTS(HTTP严格传输安全)

电子邮件和安全
强制浏览器仅通过HTTPS连接到网站的安全头,防止降级攻击。
← 返回词汇表

什么是HSTS?

HSTS(HTTP严格传输安全)是一种网络安全机制,告诉浏览器仅通过HTTPS与网站交互,永不HTTP。一旦浏览器看到HSTS头,它会自动将所有未来请求升级到HTTPS,并拒绝通过纯HTTP连接,即使用户明确输入http://。

为什么HSTS很重要

即使有效的SSL证书,漏洞仍然存在:

SSL剥离攻击

1. 用户输入"example.com"(无https://)

2. 攻击者拦截初始HTTP请求

3. 攻击者代理到HTTPS,向用户显示HTTP

4. 用户认为他们是安全的,但攻击者看到一切

HSTS通过确保浏览器从不发出那个初始HTTP请求来防止这个。

HSTS的好处

HSTS头语法

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

指令

指令描述
max-age秒数以记住HSTS(31536000 = 1年)
includeSubDomains将HSTS应用到所有子域
preload同意浏览器预加载列表包含

实施HSTS

Nginx

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Apache

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Cloudflare

在SSL/TLS→边缘证书→HTTP严格传输安全中启用

Express.js

const helmet = require('helmet');

app.use(helmet.hsts({

maxAge: 31536000,

includeSubDomains: true,

preload: true

}));

HSTS预加载列表

HSTS预加载列表是硬编码到浏览器中的域列表,应仅通过HTTPS访问。这消除了即使第一个HTTP请求漏洞。

预加载要求

1. 有效的SSL证书

2. 重定向所有HTTP到HTTPS

3. HSTS头带有:

- max-age至少31536000(1年)

- includeSubDomains指令

- preload指令

4. 所有子域必须支持HTTPS

提交到预加载列表

1. 验证要求:使用hstspreload.org检查

2. 提交域:在hstspreload.org输入域

3. 等待包含:需要数周至数月才能进行浏览器更新

预加载警告

预加载是永久的(实际上)。从列表中删除需要数月并需要浏览器更新。仅当你确定所有子域将无限期支持HTTPS时才预加载。

检查HSTS

浏览器开发工具

1. 打开开发工具→网络标签

2. 加载网站

3. 在响应头中检查Strict-Transport-Security

使用curl
curl -I https://example.com | grep -i strict
使用DomScan
curl "https://domscan.net/v1/health?domain=example.com"

# 在安全详情中报告hasHSTS

预加载状态

检查hstspreload.org查看域是否被预加载。

HSTS部署策略

阶段1:短max-age

从短max-age开始以测试:

Strict-Transport-Security: max-age=300

如果某些事情破坏,用户只缓存5分钟。

阶段2:增加持续时间

确认HTTPS到处都工作后:

Strict-Transport-Security: max-age=86400

阶段3:添加子域

所有子域支持HTTPS后:

Strict-Transport-Security: max-age=2592000; includeSubDomains

阶段4:完整部署+预加载

经过数月的稳定运作后:

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

然后提交到预加载列表。

常见HSTS问题

不支持HTTPS的子域:includeSubDomains破坏该子域 开发环境:从生产缓存的HSTS破坏本地开发 CDN/代理头:确保HSTS头不被中间件去除 混合内容:所有资源必须是HTTPS;HSTS不修复嵌入的HTTP资源

HSTS对任何处理敏感数据的网站至关重要,强烈推荐所有HTTPS网站。

将知识付诸实践

使用 DomScan 的 API 检查域名可用性、健康状态等。