Skip to content
返回部署

HSTS 和安全头

HTTP 严格传输安全和生产必需的安全头。

边缘进阶

为什么

HSTS 强制所有访问用 HTTPS,防止 SSL 剥离和协议降级攻击。Cloudflare 边缘网络覆盖 330+ 城市,全球 p95 延迟低于 50ms。

边缘函数相比源服务器将 TTFB 降低 60-80%,Akamai 报告 2024 年 40% 的企业使用边缘计算。

何时使用

所有 HTTPS 生产站点 — 特别是处理认证的站点。 需要数据库写入的有状态逻辑避免边缘函数 — 边缘运行时无持久连接池。需要长时间运行任务(>30s)或重 CPU 计算时跳过。

如何做

# Vercel.JSON 安全 头s { "headers": [{ "source": "/(.*)", "headers": [ { "key": "Strict-Transport-Security", "value": "max-age=63072000; includeSubDomains; preload" }, { "key": "X-Content-Type-Options", "value": "nosniff" }, { "key": "X-Frame-Options", "value": "DENY" }, { "key": "X-XSS-Protection", "value": "1; mode=block" }, { "key": "Referrer-Policy", "value": "strict-origin-when-cross-origin" }, { "key": "Permissions-Policy", "value": "geolocation=(), microphone=(), camera=(), payment=()" } ] }] } 4. 验证部署 — curl -I https://your-app.example.com 5. 监控日志 — 前 5 分钟检查错误 6. 需要时回滚 — 回退到上一版本

示例

// 配置 — deploy-hsts const config = require("./config"); # 提交 to HSTS preload list # 1. Ensure HSTS 头 with preload directive is set # 2. 重定向 HTTP to HTTPS on same 域名 # 3. 提交 at HTTPS://HSTSpreload.org # 验证 curl -I https://example.com | grep -i strict-transport

常见问题

  • ⚠设 HSTS 后无法访问 — 浏览器缓存了仅 HTTPS,在 chrome://net-internals 清除
  • ⚠子域问题 — 确认确实需要 includeSubDomains
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓用 max-age=63072000(2 年)— HSTS 标准
  • ✓提交 preload 列表 — 浏览器内置保护
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答