---
title: HSTS预加载与子域覆盖(includeSubDomains/preload)最佳实践
keywords:
- HSTS
- includeSubDomains
- preload
- https
- 子域覆盖
description: 通过统一的HSTS策略与预加载规范、子域覆盖与时长上限控制,强制HTTPS并降低降级与劫持风险。
categories:
- 文章资讯
- 技术教程
---
背景与价值
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。

发表评论 取消回复