背景与价值


HSTS可强制HTTPS并阻断降级攻击。预加载与子域覆盖能在浏览器层面进一步增强安全。


统一规范


  • 时长上限:`max-age` 默认≥31536000且不超过两年。
  • 子域覆盖:生产启用 `includeSubDomains`,避免子域降级链路。
  • 预加载:满足条件后申请预加载并定期复核。

核心实现


策略生成与校验


type Res = { setHeader: (k: string, v: string) => void }

function ttlValid(sec: number): boolean { return Number.isInteger(sec) && sec >= 31536000 && sec <= 63072000 }

function domainEligible(host: string): boolean { return /^[a-z0-9.-]+$/.test(host) && !host.startsWith('localhost') }

function setHsts(res: Res, host: string, ttlSec = 31536000, includeSub = true, preload = false) {
  if (!domainEligible(host) || !ttlValid(ttlSec)) return
  let v = `max-age=${ttlSec}`
  if (includeSub) v += '; includeSubDomains'
  if (preload) v += '; preload'
  res.setHeader('Strict-Transport-Security', v)
}

落地建议


  • 在全站启用HSTS并覆盖子域,确保长效HTTPS;满足条件后申请预加载。
  • 定期验证域名与时长配置,避免过短影响与过长难以撤销。

验证清单


  • `max-age` 是否在范围内;是否启用 `includeSubDomains` 与 `preload`。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部