首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >告别安全头缺失告警:HTTPS响应头HSTS/CSP/X-Frame-Options的配置细节

告别安全头缺失告警:HTTPS响应头HSTS/CSP/X-Frame-Options的配置细节

原创
作者头像
用户5598620
发布2026-09-08 10:59:09
发布2026-09-08 10:59:09
390
举报

告别安全头缺失告警:HTTPS响应头HSTS/CSP/X-Frame-Options的配置细节

上个月客户官网做完渗透测试,报告里列了 8 项"中危"风险,一大半是安全响应头缺失:没有 HSTS、CSP 没配、页面能被 iframe 嵌套。客户拿着报告问"这些要多久能改完"。我们花了两天把安全头全部配齐,复测通过。这篇把配置细节记录下来。

一、HSTS:强制浏览器走 HTTPS

HSTS 告诉浏览器"这个域名只能用 HTTPS 访问",杜绝降级攻击:

代码语言:txt
复制
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

参数说明:

参数

说明

max-age

31536000

生效时长(秒),一年后建议设为 63072000

includeSubDomains

-

子域名一并强制 HTTPS

preload

-

加入浏览器 HSTS 预加载列表

踩坑点:**max-age 别一上来就设很大**,先设 300(5分钟)观察线上有没有 http 资源被劫持,稳定后再逐步加大,否则误伤后很难回退。

二、CSP:限制资源加载来源

CSP 控制页面能加载哪些来源的资源,是防 XSS 的关键:

代码语言:txt
复制
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; img-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; frame-ancestors 'none'

最容易踩的坑:**script-src 漏了第三方统计脚本域名**,配置上线后统计代码全被拦;**'unsafe-inline' 能不加就不加**,加了等于允许内联脚本执行。

三、其他三个必须配的头

响应头

示例值

作用

X-Frame-Options

DENY

禁止页面被 iframe 嵌套(防点击劫持)

X-Content-Type-Options

nosniff

禁止浏览器 MIME 嗅探

Referrer-Policy

strict-origin-when-cross-origin

控制 Referrer 泄露范围

四、Nginx 配置示例

代码语言:txt
复制
add\_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add\_header X-Frame-Options "DENY" always;
add\_header X-Content-Type-Options "nosniff" always;
add\_header Referrer-Policy "strict-origin-when-cross-origin" always;
add\_header Content-Security-Policy "default-src 'self'" always;

关键点:always 参数让安全头在错误页面(4xx/5xx)也返回,否则错误页会漏配。

五、踩坑清单(这 5 个坑都踩过)

  1. HSTS 一上来 max-age 设一年,发现 http 图片被拦截后回退困难,改成 300 起步
  2. CSP 上线没加第三方统计域名,埋点数据全丢
  3. 忘了 always 参数,404 页面不带安全头,渗透报告依然报风险
  4. CDN 层没透传响应头,源站配了但用户拿不到,排查半天发现是 CDN 配置问题
  5. X-Frame-Options 和 CSP frame-ancestors 一起配但值冲突,以 CSP 为准

这次官网的 HTTPS 是在乔拓云的建站产品里开启的,安全响应头在后台有配置项,我主要补充了 CDN 透传和 HSTS 分阶段升级这两块,复测时 8 项中危全部清零。

复盘要点

  1. HSTS 分阶段升级:300 秒起步,稳定后加到 31536000
  2. CSP 上线前核对所有第三方域名,object-src 设 none
  3. 安全头要加 always,CDN 层必须透传

以上是个人实践记录,各平台具体功能以官方实时信息为准。

开放问题:你们做安全头配置时,还踩过哪些和 CDN 或代理相关的坑?

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 告别安全头缺失告警:HTTPS响应头HSTS/CSP/X-Frame-Options的配置细节
    • 一、HSTS:强制浏览器走 HTTPS
    • 二、CSP:限制资源加载来源
    • 三、其他三个必须配的头
    • 四、Nginx 配置示例
    • 五、踩坑清单(这 5 个坑都踩过)
    • 复盘要点
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档