# HTTP 安全响应头速查表(Web渗透、代码审计、等保、OWASP)
> 用途:检查Web服务器/中间件返回头,防御XSS、点击劫持、MIME嗅探、信息泄露等风险;可直接写入渗透报告
|响应头|作用|推荐值|风险(缺失该头会导致)|
|---|---|---|---|
|**X-Frame-Options**|防止页面被iframe嵌入,抵御**点击劫持**|`DENY` 或者 `SAMEORIGIN`
允许指定域名:`ALLOW-FROM https://xxx.com`|页面可被第三方网站嵌入iframe实施点击劫持攻击|
|**X-Content-Type-Options**|禁用浏览器MIME类型自动嗅探|`nosniff`|浏览器误判文件类型,触发MIME嗅探攻击,执行恶意脚本|
|**Content-Security-Policy (CSP)**|白名单控制资源加载来源,大幅降低XSS|`default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:`|缺少CSP,XSS漏洞更容易被利用,加载第三方恶意脚本|
|**X-XSS-Protection**|浏览器内置XSS过滤器(现代浏览器逐步废弃,配合CSP)|`1; mode=block`|旧版浏览器无法拦截反射型XSS|
|**Strict-Transport-Security (HSTS)**|强制浏览器使用HTTPS,防止HTTP降级劫持|`max-age=31536000; includeSubDomains; preload`|用户首次访问HTTP会被劫持,SSL降级攻击|
|**Referrer-Policy**|控制Referer信息泄露,防止URL参数泄露|`strict-origin-when-cross-origin` / `no-referrer`|跨站请求泄露页面路径、token、GET参数敏感信息|
|**Permissions-Policy**|控制浏览器API权限(摄像头、麦克风、定位等,旧名Feature-Policy)|`camera=(), microphone=(), geolocation=()`|页面可随意调用浏览器硬件API,隐私风险|
|**Cache-Control**|控制页面缓存,敏感页面禁止缓存|敏感页面:`no-cache, no-store, must-revalidate`|敏感页面被浏览器/代理缓存,泄露会话、隐私数据|
|**Pragma**|兼容旧浏览器,禁用缓存(配合Cache-Control)|`no-cache`|旧浏览器缓存敏感内容|
|**X-Powered-By**|**信息泄露头,建议直接删除** |(删除,不返回)|泄露后端技术栈:PHP/Express/ASP.NET,给攻击者提供版本线索|
|**Server**|**信息泄露头,建议精简/隐藏** |(删除或伪装)|泄露中间件名称版本(Nginx/Apache/IIS),便于攻击者定向找CVE|
## 补充:Cookie安全相关响应头(Set-Cookie内属性,非常重要,OWASP重点)
> Set-Cookie: JSESSIONID=xxxx; **属性**
|Cookie属性|作用|推荐配置|缺失风险|
|---|---|---|---|
|HttpOnly|禁止JS读取Cookie,防御XSS偷Cookie|开启|XSS成功后可直接document.cookie盗取会话|
|Secure|仅HTTPS下传输Cookie|HTTPS站点必须开启|HTTP明文传输Cookie,抓包窃取|
|SameSite|防御CSRF,限制跨站携带Cookie|`SameSite=Strict` / `Lax`|容易遭受CSRF跨站请求伪造|
|Max-Age / Expires|设置Cookie过期时间,会话Cookie不设置|会话Cookie不设置,持久Cookie缩短周期|Cookie长期有效,被盗后有效期长|
## ✅ 推荐完整安全头示例(Nginx/Apache配置参考)
```http
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=()
Cache-Control: no-cache, no-store, must-revalidate
```
## 📌 排查命令(curl快速检测)
```bash
# 获取全部响应头
curl -I https://target.test
# 只看安全相关头
curl -I https://target.test | grep -E "X-Frame|X-Content|Strict|Content-Security|Referrer|Permissions"
```
## ⚠️ 常见踩坑
1. CSP配置过宽,如 `script-src 'unsafe-inline' 'unsafe-eval'`,基本失去防护意义
2. HSTS仅配置max-age,忘记`includeSubDomains`,子域名无保护
3. 只加安全头,Cookie不配置HttpOnly/Secure,防护不完整
4. 多个安全头冲突;CSP规则写错导致页面静态资源加载失败
## 📝 渗透报告结论模板
> 目标站点缺少X-Frame-Options、CSP、HSTS等安全响应头,存在点击劫持、XSS利用、HTTPS降级劫持风险;建议在Web服务增加对应HTTP安全响应头加固。