Skip to content

参考

基于 OWASP Cheat Sheet Series + MDN Web Docs + OWASP Top 10:2025 + RFC 6797 编写

速查

  • 六类攻击:XSS / CSRF / SQL 注入 / SSRF / DDoS / MITM
  • XSS 三类型:存储型 / 反射型 / DOM 型;三类 sink:HTML / JS / JS URL
  • XSS 四件套:输出编码 + CSP nonce + Trusted Types + Sanitizer
  • CSRF 三层:SameSite=Lax(默认)+ Token / Signed Double-Submit + Sec-Fetch-Site
  • SQL 注入:参数化查询 / ORM 默认接口;raw 接口必须占位符
  • SSRF 铁律:白名单 + 禁重定向 + IMDSv2 + 查 A/AAAA
  • DDoS 分层:L7 应用速率限制 / L3-4 云清洗
  • MITM:HSTS(max-age=31536000; includeSubDomains; preload)+ TLS
  • OWASP Top 10:2025 现行版本(A01 Broken Access Control 仍 #1,A05 升至 #2)
  • CSP nonce-based Strict CSP:script-src 'nonce-{RANDOM}' 'strict-dynamic'; object-src 'none'; base-uri 'none'
  • 现代浏览器原生防御:Trusted Types(Baseline 2026)/ Sanitizer(Limited Availability)/ Sec-Fetch-Site(> 98%)/ SameSite=Lax 默认(Chrome 84+)
  • 完整说明见 入门 / 攻击方式与防御

攻击-防护对照表

攻击OWASP机制主防御反模式
XSS 存储型A03持久化 DB,影响大量用户输出编码 + CSP + Sanitizer + Trusted TypesinnerHTML = userInput 未消毒
XSS 反射型A03响应反射,钓鱼触发输出编码 + CSP nonce'unsafe-inline'
XSS DOM 型A03纯客户端 sink,WAF 挡不住Trusted Types + Sanitizer服务端 WAF 当主防御
CSRFA01滥用浏览器自动带 CookieSameSite=Lax + Synchronizer Token / Signed Double-Submit + Sec-Fetch-SiteNaive Double-Submit、仅靠 Referer、CAPTCHA
SQL 注入A03拼接 SQL 改结构参数化查询 / ORM 默认接口字符串拼接、ORM raw 拼接
SSRFA10→主流服务器发攻击者指定 URL白名单 + 禁重定向 + IMDSv2仅黑名单、不禁重定向
DDoS L7Availability耗 CPU/内存/连接速率限制 + 优雅降级 + Bulkhead仅靠 CDN 速率规则
DDoS L3/4Availability耗带宽饱和云清洗 + Anycast单机防御
MITMA02中间人窃听/篡改HSTS + TLS 证书链校验HTTP 响应下发 HSTS

CSP 指令速查表

指令作用推荐值
default-src默认加载策略'self'
script-src脚本来源'nonce-{RANDOM}' 'strict-dynamic'
object-src<object> / <embed>'none'
base-uri<base> 限制'none'
frame-ancestors嵌套祖先(防 Clickjacking)'self''none'
frame-src<frame> / <iframe> 来源'self'
img-src图像来源'self' data:
style-src样式来源'nonce-{RANDOM}'
connect-srcXHR / WS / fetch'self'
font-src字体来源'self'
media-src音视频来源'self'
manifest-srcmanifest 来源'self'
upgrade-insecure-requests自动 HTTP → HTTPS启用
require-trusted-types-for 'script'强制 Trusted Types启用
trusted-types允许的 policy 名policyName'none'
report-toReporting-API 上报端点推荐用
report-uri(已废弃)上报 URL过渡保留

CSP 关键字

关键字含义
'self'同源(协议 + 域名 + 端口)
'none'完全阻止
'nonce-{RANDOM}'每响应重新生成的不重复 nonce
'sha256-{HASH}'内联脚本 / 样式 hash
'strict-dynamic'受信任脚本可加载子脚本
'unsafe-inline'允许内联(含 nonce/hash 时被忽略
'unsafe-eval'允许 eval等于没防 XSS

nonce-based Strict CSP 示例

text
Content-Security-Policy:
  default-src 'self';
  script-src 'nonce-{RANDOM}' 'strict-dynamic';
  object-src 'none';
  base-uri 'none';
  frame-ancestors 'self';
  upgrade-insecure-requests;
  report-to csp-endpoint;

安全响应头表

作用推荐值
Content-Security-PolicyXSS 防御 / 资源加载策略nonce-based Strict CSP
Strict-Transport-Security强制 HTTPS(防 MITM 降级)max-age=31536000; includeSubDomains; preload
X-Frame-Options防 Clickjacking(旧)DENYSAMEORIGIN(被 CSP frame-ancestors 替代)
X-Content-Type-Options防 MIME 嗅探nosniff
Referrer-Policy控制 Referer 暴露strict-origin-when-cross-origin
Permissions-Policy控制浏览器 API 访问按需(如 geolocation=(), camera=()
Cross-Origin-Opener-Policy进程隔离(防 Spectre)same-origin
Cross-Origin-Embedder-Policy跨域加载限制require-corp
Cross-Origin-Resource-Policy资源跨域加载same-site
属性作用推荐值
Secure仅 HTTPS 传输启用
HttpOnly防 JS 读 Cookie(缓解 XSS 窃取)启用
SameSiteCSRF 防御Lax(默认)/ Strict(高敏感)/ None; Secure(第三方)
Path作用域路径最小化(/ 仅在根需要时)
Domain作用域域名不设(仅当前域);子域共享才设
Max-Age / Expires过期时间会话 token 短期,长期 token 显式设
__Host- 前缀防子域 Cookie 注入高敏感 Cookie 加前缀(要求 Path=/ Secure 无 Domain)

Trusted Types 三类 sink 表

sink 类型危险 API可信类型policy 方法
HTML sinkinnerHTML / outerHTML / document.write / insertAdjacentHTMLTrustedHTMLcreateHTML
JS sinkeval / Function / setTimeout(string) / setInterval(string)TrustedScriptcreateScript
JS URL sinkscript.src / location.href / location.replace() / location.assign()TrustedScriptURLcreateScriptURL

CSRF Token 模式对比表

模式状态存储适用风险
Synchronizer Token有状态服务端会话有会话存储(传统 Web)服务端需查会话
Signed Double-Submit HMAC无状态HMAC 签名 Cookie + 请求头JWT / 微服务 / 无会话必须用 Signed,Naive 易被绕过
Encrypted Token有/无状态服务端加密高安全要求实现复杂

Sec-Fetch-Site 取值表

取值含义CSRF 决策
same-origin同源放行
same-site同站不同源视场景
cross-site跨站block
none用户直发(地址栏 / 书签)放行

SSRF 黑名单必阻 IP 表

IP / 网段用途
169.254.169.254AWS / Azure IMDS(云元数据)
metadata.google.internalGoogle Cloud 元数据
127.0.0.0/8本机回环
::1/128IPv6 本机
10.0.0.0/8RFC1918 A 类私网
172.16.0.0/12RFC1918 B 类私网
192.168.0.0/16RFC1918 C 类私网
224.0.0.0/4多播
0.0.0.0/8本机网络

黑名单只是兜底,主防御是白名单

OWASP Top 10:2025 现状

编号类别现状
A01Broken Access Control仍居 #1
A02Cryptographic Failures含 MITM(TLS / HSTS)
A03Injection含 XSS、SQL 注入
A05Security Misconfiguration升至 #2
A06Vulnerable and Outdated Components依赖安全篇
A07Identification and Authentication Failures会话/认证篇
A10SSRF(2021 社区补充)2025 已并入主流注入/访问控制讨论

OWASP Top 10:2025 已发布为现行版本,2021 版归档仍可访问。引用 OWASP 时应优先用 2025 版编号。

现代浏览器原生防御版本

防御Baseline 状态起始版本
CSP3(strict-dynamic / nonce / trusted-types)Baseline widely available主流浏览器支持
Trusted Types APIMDN Baseline 20262026-02 起跨最新版主流浏览器可用(含 Web Workers)
Sanitizer APILimited Availability(不在 Baseline)需 polyfill 或 DOMPurify 兜底
SameSite=Lax 默认主流共识Chrome 84(2020-07)
Sec-Fetch-Site覆盖率 > 98%主流浏览器支持
HSTSBaseline widely available主流浏览器支持(2015-07 起)

官方资源