Audits HTTP security headers including CSP, HSTS, X-Frame-Options, and Cookie attributes using curl scripts and tools like SecurityHeaders.com to identify missing or misconfigured web protections.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cybersecurity-skills-zh:performing-security-headers-auditThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- 在授权 Web 应用程序安全评估期间作为标准配置审查
检索并记录所有与安全相关的响应头。
# 获取所有响应头
curl -s -I "https://target.example.com/" | grep -iE \
"(strict-transport|content-security|x-frame|x-content-type|x-xss|referrer-policy|permissions-policy|feature-policy|x-permitted|cross-origin|set-cookie|server|x-powered-by|cache-control)"
# 跨多个页面检查头部
PAGES=("/" "/login" "/api/health" "/admin" "/account/settings" "/static/app.js")
for page in "${PAGES[@]}"; do
echo "=== $page ==="
curl -s -I "https://target.example.com$page" 2>/dev/null | grep -iE \
"(strict-transport|content-security|x-frame|x-content-type|x-xss|referrer-policy|permissions-policy|set-cookie|server|x-powered)"
echo
done
# 检查 HTTP 和 HTTPS 响应
echo "=== HTTP 响应 ==="
curl -s -I "http://target.example.com/" | head -20
echo "=== HTTPS 响应 ==="
curl -s -I "https://target.example.com/" | head -20
评估 HTTP 严格传输安全(HSTS)配置。
# 检查 HSTS 头
curl -s -I "https://target.example.com/" | grep -i "strict-transport-security"
# 预期:Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
# 验证 HSTS 属性:
# max-age:预加载资格应 >= 31536000(1 年)
# includeSubDomains:保护所有子域
# preload:符合浏览器 HSTS 预加载列表的资格
# 检查 HTTP 是否重定向到 HTTPS
curl -s -I "http://target.example.com/" | head -5
# 应为 301/302 重定向到 https://
# 检查是否在预加载列表中
# 访问:https://hstspreload.org/?domain=target.example.com
# 测试仅 HTTPS 的 Cookie
curl -s -I "https://target.example.com/login" | grep -i "set-cookie"
# 所有会话 Cookie 应带有 Secure 标志
# 检查混合内容
curl -s "https://target.example.com/" | grep -oP "http://[^\"']+" | head -20
# 在 HTTPS 页面上加载 HTTP 资源会产生混合内容漏洞
分析 CSP 头的有效性和潜在绕过方式。
# 提取 CSP 头
CSP=$(curl -s -I "https://target.example.com/" | grep -i "content-security-policy" | cut -d: -f2-)
echo "$CSP"
# 检查危险指令:
# script-src 中的 'unsafe-inline':允许内联脚本(XSS 风险)
# script-src 中的 'unsafe-eval':允许 eval()(XSS 风险)
# 任何指令中的 *:允许从任何来源加载
# script-src 中的 data::允许 data: URI 脚本
# 缺少 default-src:无回退策略
echo "$CSP" | tr ';' '\n' | while read directive; do
echo " $directive"
if echo "$directive" | grep -q "unsafe-inline"; then
echo " 警告:unsafe-inline 允许内联脚本执行"
fi
if echo "$directive" | grep -q "unsafe-eval"; then
echo " 警告:unsafe-eval 允许 eval() 调用"
fi
if echo "$directive" | grep -q " \* "; then
echo " 警告:通配符允许从任何来源加载"
fi
done
# 检查 CSP report-only(未强制执行)
curl -s -I "https://target.example.com/" | grep -i "content-security-policy-report-only"
# Report-only 不阻止违规,只记录
# 使用 Google 的 CSP 评估器测试
# https://csp-evaluator.withgoogle.com/
# 粘贴 CSP 头进行自动化分析
# 通过白名单域检查 CSP 绕过
# 如果 CDN 域被白名单,检查 JSONP 端点或 angular 库
验证反点击劫持和 iframe 嵌入控制。
# X-Frame-Options
curl -s -I "https://target.example.com/" | grep -i "x-frame-options"
# 预期:DENY 或 SAMEORIGIN
# ALLOW-FROM 已弃用,现代浏览器不支持
# CSP frame-ancestors(取代 X-Frame-Options)
curl -s -I "https://target.example.com/" | grep -i "content-security-policy" | grep -o "frame-ancestors[^;]*"
# 预期:frame-ancestors 'none' 或 frame-ancestors 'self'
# X-Content-Type-Options
curl -s -I "https://target.example.com/" | grep -i "x-content-type-options"
# 预期:nosniff(防止 MIME 类型嗅探)
# X-XSS-Protection(旧版,但对旧浏览器仍有用)
curl -s -I "https://target.example.com/" | grep -i "x-xss-protection"
# 预期:1; mode=block(或在 CSP 全面覆盖时为 0)
# 注意:CSP 存在时,现代建议是 0(禁用)
# Referrer-Policy
curl -s -I "https://target.example.com/" | grep -i "referrer-policy"
# 预期:strict-origin-when-cross-origin 或 no-referrer
# 防止通过 Referer 头泄漏敏感 URL 数据
检查会话和认证 Cookie 的安全标志。
# 获取所有 Set-Cookie 头
curl -s -I -L "https://target.example.com/login" | grep -i "set-cookie"
# 检查每个 Cookie 的必需属性:
# Secure:仅通过 HTTPS 发送
# HttpOnly:JavaScript 不可访问(防止 XSS Cookie 盗窃)
# SameSite:控制跨站 Cookie 发送(Strict、Lax、None)
# Path:限制 Cookie 范围
# Domain:控制哪些域接收 Cookie
# Max-Age/Expires:Cookie 生命周期
# 自动化 Cookie 检查
curl -s -I "https://target.example.com/login" | grep -i "set-cookie" | while read line; do
echo "Cookie: $(echo "$line" | grep -oP '[^:]+=[^;]+')"
missing=""
echo "$line" | grep -qi "secure" || missing="$missing Secure"
echo "$line" | grep -qi "httponly" || missing="$missing HttpOnly"
echo "$line" | grep -qi "samesite" || missing="$missing SameSite"
if [ -n "$missing" ]; then
echo " 缺少:$missing"
else
echo " 所有标志均存在"
fi
done
# 检查 __Host- 和 __Secure- Cookie 前缀
# __Host- Cookie 必须有 Secure、Path=/、无 Domain
# __Secure- Cookie 必须有 Secure 标志
审查浏览器功能控制和信息泄漏头。
# Permissions-Policy(原 Feature-Policy)
curl -s -I "https://target.example.com/" | grep -i "permissions-policy"
# 控制浏览器功能:摄像头、麦克风、地理位置等
# 预期:限制未使用的功能
# 示例:permissions-policy: camera=(), microphone=(), geolocation=()
# 跨域头
curl -s -I "https://target.example.com/" | grep -iE "(cross-origin-embedder|cross-origin-opener|cross-origin-resource)"
# COEP:Cross-Origin-Embedder-Policy: require-corp
# COOP:Cross-Origin-Opener-Policy: same-origin
# CORP:Cross-Origin-Resource-Policy: same-origin
# 需要标记的信息泄露头
curl -s -I "https://target.example.com/" | grep -iE "(server|x-powered-by|x-aspnet|x-generator)"
# Server: Apache/2.4.52(应删除或使用通用值)
# X-Powered-By: PHP/8.1.2(应删除)
# 这些头向攻击者暴露技术栈
# 敏感页面的 Cache-Control
curl -s -I "https://target.example.com/account/settings" | grep -i "cache-control"
# 敏感页面应使用:Cache-Control: no-store, no-cache, must-revalidate
# 防止浏览器缓存敏感数据
# 使用在线工具生成综合报告
echo "使用 SecurityHeaders.com 扫描:https://securityheaders.com/?q=target.example.com"
echo "使用 Mozilla Observatory 扫描:https://observatory.mozilla.org/analyze/target.example.com"
| 概念 | 定义 |
|---|---|
| HSTS | 强制浏览器对域名仅使用 HTTPS,防止协议降级攻击 |
| CSP | 限制页面上可以加载的资源(脚本、样式、图片) |
| X-Frame-Options | 控制页面是否可嵌入 iframe(点击劫持防御) |
| X-Content-Type-Options | 防止 MIME 类型嗅探;强制浏览器遵守声明的 Content-Type |
| Referrer-Policy | 控制跨域请求发送多少引用者信息 |
| Permissions-Policy | 限制页面可用的浏览器功能(摄像头、麦克风、地理位置) |
| SameSite Cookie | 控制 Cookie 在跨站上下文中的发送时机(Strict、Lax、None) |
| HSTS 预加载(HSTS Preloading) | 在浏览器源代码中硬编码 HSTS 策略以实现首次访问保护 |
| 工具 | 用途 |
|---|---|
| SecurityHeaders.com | 提供字母评级的安全头评估在线扫描器 |
| Mozilla Observatory | 带评分和建议的综合 Web 安全扫描器 |
| CSP Evaluator(Google) | 分析内容安全策略的弱点和绕过方式 |
| Burp Suite Professional | 检查所有应用程序页面的响应头 |
| securityheaders(CLI) | 命令行安全头扫描器 |
| Hardenize | TLS 和安全头监控服务 |
旧版应用程序完全不返回安全头。没有 HSTS、CSP、X-Frame-Options 或 Cookie 安全标志。每个页面都容易受到点击劫持,XSS 没有浏览器级缓解,Cookie 通过 HTTP 发送。
CSP 头包含 script-src 'self' 'unsafe-inline'。虽然限制了外部脚本加载,但 unsafe-inline 指令允许任何内联脚本执行,使 CSP 对 XSS 失效。
会话 Cookie 设置时没有 Secure 标志。在 HTTP/HTTPS 混合站点上,会话令牌可能被网络攻击者通过普通 HTTP 请求拦截。
没有 HSTS 头。网络上的攻击者可以执行 SSL 剥离攻击,将受害者的 HTTPS 连接降级为 HTTP 并拦截所有流量。
## 安全头审计报告
**目标**:target.example.com
**评级**:D(SecurityHeaders.com)
**评估日期**:2024-01-15
### 头部评估
| 头部 | 状态 | 当前值 | 推荐值 |
|--------|--------|---------------|-------------|
| Strict-Transport-Security | 缺失 | - | max-age=31536000; includeSubDomains; preload |
| Content-Security-Policy | 弱 | script-src 'self' 'unsafe-inline' | script-src 'self' 'nonce-{random}' |
| X-Frame-Options | 缺失 | - | DENY |
| X-Content-Type-Options | 存在 | nosniff | nosniff(正确) |
| Referrer-Policy | 缺失 | - | strict-origin-when-cross-origin |
| Permissions-Policy | 缺失 | - | camera=(), microphone=(), geolocation=() |
| X-XSS-Protection | 缺失 | - | 0(配合强 CSP) |
### Cookie 安全
| Cookie | Secure | HttpOnly | SameSite | Path |
|--------|--------|----------|----------|------|
| session | 否 | 是 | 未设置 | / |
| user_pref | 否 | 否 | 未设置 | / |
| csrf_token | 是 | 否 | Strict | / |
### 信息泄露
| 头部 | 值 | 风险 |
|--------|-------|------|
| Server | Apache/2.4.52 | 技术指纹识别 |
| X-Powered-By | PHP/8.1.2 | 针对特定版本的漏洞利用 |
### 修复建议优先级
1. **严重**:向会话 Cookie 添加 Secure 和 SameSite 标志
2. **高**:实施最短 1 年 max-age 的 HSTS
3. **高**:将 CSP 中的 'unsafe-inline' 替换为基于 nonce 的策略
4. **中**:添加 X-Frame-Options: DENY
5. **中**:添加 Referrer-Policy: strict-origin-when-cross-origin
6. **低**:删除 Server 和 X-Powered-By 的版本信息
7. **低**:添加 Permissions-Policy 以限制未使用的浏览器功能
npx claudepluginhub killvxk/cybersecurity-skills-zhAudits HTTP security headers (CSP, HSTS, X-Frame-Options, cookie attributes) to identify missing or misconfigured browser-level protections during web security assessments.
Audits HTTP security headers (CSP, HSTS, X-Frame-Options, cookie attributes) to identify missing or misconfigured browser-level protections during web security assessments.
Audits HTTP security headers like CSP, HSTS, X-Frame-Options, and cookie attributes using curl scripts to identify missing or misconfigured browser protections. For web app security assessments and compliance checks.