敏感数据保护与安全配置:加密、密钥管理与 HTTP 响应头基线
0. 元信息
- 主题路径:
docs/topics/web-security/subtopics/web-security-crypto-and-config/ - 父主题:
web-security - 主分类:安全与可靠性
- 辅助分类:Web 与后端
- 适合对象:后端开发者、运维、平台工程师
- 建议周期:1~1.5 周(每周 6~8 小时)
- 前置知识:
network/rest-api-design;理解 HTTP、TLS、数据库 - 最终目标:能为应用部署 KMS/HSM 密钥管理、字段级加密、传输 TLS、日志脱敏;并能让 HTTP 响应头基线(CSP、HSTS、cookie Secure/HttpOnly/SameSite、Referrer-Policy、X-Frame-Options)通过
securityheaders.comA/A+ 评分
1. 学习路线
密码学积木(对称/非对称、AEAD、HKDF)
→ TLS 1.2/1.3 与证书(链、SNI、HSTS)
→ KMS / HSM / Vault
→ 密钥轮换与分层
→ 字段级加密(envelope encryption)
→ 日志脱敏与结构化日志
→ HTTP 响应头基线:CSP、HSTS、cookie、Referrer-Policy、X-Frame-Options
→ Permissions-Policy 与 CORP/COEP
→ 自动化校验:securityheaders.com、Observatory、testssl.sh
2. 阶段周数分配
建议周期 8 周,每周 6 天、每天 1.5~2 小时(每周约 9~12 小时),第 7 天用于复盘和补测:第 1 周基础模型与威胁边界;第 2~3 周核心机制;第 4~5 周防御实现;第 6 周检测、测试与审计;第 7 周综合演练;第 8 周项目收尾、复盘与最终验收。
3. 九阶段表
| 阶段 | 核心知识 | 实践产出 | 可观察学会标准 |
|---|---|---|---|
| 1. 密码学积木 | AES-GCM、ChaCha20-Poly1305、RSA、ECDHE、HKDF、HMAC | 选型决策表 | 能区分加密、签名、MAC |
| 2. TLS | TLS 1.3 握手、证书链、SNI、ALPN、OCSP Stapling | TLS 配置基线 | testssl.sh 评 A+;HSTS 启用 |
| 3. 密钥管理 | KMS / HSM / Vault | 接入 AWS KMS 或 Vault | 密钥不落代码/配置文件;轮换周期明确 |
| 4. 字段级加密 | Envelope encryption、AES-GCM、版本化字段 | PII 字段加密 + 解密 | 数据库泄露后字段仍受保护 |
| 5. 日志脱敏 | pino/winston + 字段白名单 + 集中过滤 | 脱敏中间件 | grep 不到 token / 密码 / 完整 PII |
| 6. CSP | default-src、script-src nonce、report-only → enforce | CSP 报告与落地 | 报告 mode → 强制 mode 切换 |
| 7. cookie 配置 | Secure、HttpOnly、SameSite、__Host- 前缀 | 三属性齐 | 不出现缺属性的 Set-Cookie |
| 8. 其它响应头 | HSTS preload、Referrer-Policy、X-Frame-Options、Permissions-Policy | 完整基线 | securityheaders.com 评 A/A+ |
| 9. 自动化校验 | Observatory / securityheaders.com / testssl.sh | CI 检查 | 评分跌出 A 时构建失败 |
关键陷阱:HSTS 首次访问前不生效;CSP nonce 需每次请求换;密钥一旦泄漏就要换;HSTS preload 是单向门。
4. 第一周:基础与威胁建模(每天 1.5~2 小时)
| Day | 任务 | 产出 | 自检 |
|---|---|---|---|
| 1 | 从 §1 首个知识点画信任边界,列出 5 个资产和 5 个攻击面 | notes/day1.md,含资产/攻击面表 | test -s notes/day1.md && grep -c "攻击面" notes/day1.md 输出 ≥1 |
| 2 | 阅读 §3 阶段 1,针对 3 个概念各写定义、前置条件和失败后果 | notes/day2.md,至少 3 个小节 | grep -c "失败" notes/day2.md 输出 ≥3 |
| 3 | 用本地最小示例复现一个不安全行为,再写修复前后差异 | notes/day3.md 与 notes/day3-output.txt | `test -s notes/day3-output.txt && grep -E “before |
| 4 | 依据 §3 阶段 2 写一张请求/数据流时序图 | notes/day4.md,含 Mermaid 图 | grep -q "mermaid" notes/day4.md |
| 5 | 为 3 个边界条件设计测试,并执行命令记录结果 | notes/day5.md,含输入/期望/实际 | grep -c "期望" notes/day5.md 输出 ≥3 |
| 6 | 将一条防御规则实现为可运行脚本或配置,并记录命令 | notes/day6.sh 或 notes/day6.json、notes/day6.md | test -s notes/day6.md && grep -q "运行" notes/day6.md |
| 7 | 回顾 Day 1~6,写 300 字复盘并列出 10 个自测问答 | notes/week1-retrospective.md | wc -w notes/week1-retrospective.md ≥300 且 grep -c "问:" ≥10 |
5. 阶段通用验收
- 阶段 1 验收:完成概念地图;提交威胁模型;能用 10 分钟解释核心资产、信任边界和主要攻击面。
- 阶段 2 验收:完成核心机制最小实现;提交 3 组正向与负向测试;测试输出包含成功和拒绝结果。
- 阶段 3 验收:完成防御实现;提交配置/代码审计清单;所有高风险输入均经过验证、编码或安全 API。
- 阶段 4 验收:完成检测或安全测试规则;提交日志/扫描/测试输出;能从证据定位触发点和影响范围。
- 阶段 5 验收:完成一次事件或攻击链演练;提交时间线、处置动作和恢复验证;复现者按 README 可独立运行。
- 阶段 6 验收:完成综合项目核心功能;边界测试全通过;README、
notes/design.md、notes/test.md、notes/retrospective.md均存在且非空。 - 阶段 7~8 验收:修复复盘发现的问题;重新执行全部命令;最终报告记录版本、命令和结果。
6. 最终验收
学完后应能完成威胁建模、选择合适的安全机制、实现最小防御链路、编写负面测试、读取日志或扫描证据,并向团队解释安全权衡和残余风险。
量化标准:
- 完成至少 24 道相关练习,其中 12 道基础、8 道中等、4 道综合/高难;每题保留测试或答案证据。
- 独立写出至少 4 个可运行 demo,每个包含成功路径和至少 3 个拒绝/异常测试。
- 完成 1 次 60 分钟攻击—防御演练,能在 15 分钟内讲清威胁模型、核心流程和修复理由。
- 综合项目的自动化检查通过率 100%,高危问题数 0,README 可让他人在 10 分钟内复现。
7. 综合项目
首选项目:安全 Web 服务实验室(本主题对应的 “)。实现一个最小 HTTP/API 服务,故意保留一条可控弱点,再用安全实现和自动化测试修复它。
备选项目:安全审计 CLI。读取请求、配置或依赖清单,输出风险、证据、严重性和修复建议。
必做要求:
- 输入:明确的 JSON/HTTP 请求、配置文件或依赖清单;拒绝缺失字段、超长值、非法编码和越权对象。
- 输出:机器可读 JSON 报告或 API 响应,并包含状态、错误码、证据、修复建议;日志不得泄露密码、令牌或密钥。
- 算法/工具:按 §3 选择标准库安全 API、参数化查询、策略匹配、哈希/签名、规则扫描或事件时间线;在 README 说明选择理由与复杂度/局限。
- 验收标准:成功路径通过;至少 10 个边界/负面测试通过;高风险输入被拒绝;运行静态检查或扫描无新增高危;输出可复现。
项目根目录必须包含 README.md、notes/design.md、notes/test.md、notes/retrospective.md。README 需写需求说明、数据结构/工具选择理由、核心流程、模块化实现、边界测试、编译/运行说明、目录结构和复盘记录;notes/design.md 写威胁模型与流程图,notes/test.md 写每组输入/期望/实际输出,notes/retrospective.md 写用时、难点、收获和下一步。
本主题贡献
- 职责 1(KMS + 字段级 Envelope Encryption):所有 PII / API key / DB 备份字段走 Envelope encryption——KEK 在 AWS KMS / HashiCorp Vault,DEK 用 AES-256-GCM 加密数据并落库,DEK 可独立轮换(§3 阶段 3~4、§9.6.3);密钥永不落代码或
.env(呼应 §9.4 #10 与 §10 误区)。 - 职责 2(TLS + HSTS Preload + 安全响应头基线):TLS 1.3 + Mozilla SSL Configuration Generator “Modern” 等级,证书链 + OCSP Stapling 配齐;HSTS
max-age=63072000; includeSubDomains; preload(§3 阶段 2 / 8),提交hstspreload.org前评估所有子域;CSP 走default-src 'self' + nonce + strict-dynamic,先Content-Security-Policy-Report-Only收集违规再 enforce(§3 阶段 6、§9.3.5)。 - 职责 3(Cookie + Referrer-Policy + Permissions-Policy + 日志脱敏):所有
Set-Cookie强制Secure; HttpOnly; SameSite=Strict+__Host-前缀(§3 阶段 7);Referrer-Policy: strict-origin-when-cross-origin、X-Frame-Options: DENY、Permissions-Policy显式关camera/microphone/geolocation;日志用 pino + 字段白名单 + 集中脱敏中间件,grep -E 'token|password|sk-'命中 0 条(§3 阶段 5)。 - 交付物 1:可运行 demo
apps/crypto-lab/跑通 “KMS 生成 DEK → AES-GCM 加密 PII → 落库 → KMS 解封 DEK → 解密回读”,含 5 个负面测试(IV 重放、AAD 缺失、KEK 越权、轮换后老 DEK 仍可解、ECB 模式禁止)。 - 交付物 2:
infra/nginx.conf或 Next.jsnext.config.mjs完整 CSP / HSTS / Permissions-Policy / Referrer-Policy / COEP-CORP-COOP 基线,README 给出每条头“为什么这么写”。 - 交付物 3:
scripts/check-headers.mjs用curl -I+cheerio解析响应头并在 CI 中跑,输出 securityheaders.com 风格的 A/A+ 评分;同脚本校验Set-Cookie三属性。 - 交付物 4:
notes/test.md含testssl.sh --openssl与observatory.mozilla.orgAPI 跑通的截图 / JSON,证据可复现。 - 指标 1:securityheaders.com 评分 ≥A(目标 A+),
testssl.sh评 A+;CI 中任一头缺失 / 配置错误即失败。 - 指标 2:HSTS preload 提交后
hstspreload.org状态为 “Eligible / Pending / Preloaded”,且includeSubDomains全覆盖——所有*.example.com在curl -I中必返回strict-transport-security头。 - 指标 3:字段级加密覆盖率 100%——所有标
@pii注解的字段(邮箱 / 手机号 / 身份证 / 银行卡)落库前必走 envelope encryption,CI 用自定义 ESLint / ast-grep 规则扫“明文 PII 落库”模式,命中即红;密钥轮换周期 ≤365 天,文档化在notes/retrospective.md。
8. 推荐开源资料
| 阶段 | 角色 | 资料名 | 链接 | 用法 |
|---|---|---|---|---|
| 1 | 入门 | OWASP Web Security Testing Guide | https://owasp.org/www-project-web-security-testing-guide/ | 按主题阅读测试方法并转成自己的检查项 |
| 2 | 官方文档 | MDN Web Security | https://developer.mozilla.org/en-US/docs/Web/Security | 查阅浏览器安全机制、Cookie、CORS、CSP |
| 3 | 规范/标准 | OWASP Cheat Sheet Series | https://cheatsheetseries.owasp.org/ | 实现前逐条对照防御清单 |
| 4 | 工具/源码 | OWASP ZAP | https://www.zaproxy.org/ | 对本地项目做代理扫描,保存报告 |
| 5 | 练习平台 | PortSwigger Web Security Academy | https://portswigger.net/web-security | 完成对应实验并记录请求、漏洞和修复 |
| 6 | 参考标准 | NIST Cybersecurity Framework | https://www.nist.gov/cyberframework | 将检测、响应和恢复动作映射到流程 |
许可证提示:使用 OWASP、ZAP 或其他开源资料与源码前,先打开仓库或页面的 LICENSE/版权说明;默认只引用链接和思路,复制代码时保留版权与许可证文本。
默认使用顺序:先读 §1 与 OWASP 入门资料建立模型 → 用 MDN/规范查 API 和约束 → 在本地项目实现 → 用 ZAP 或对应扫描工具验证 → 到 PortSwigger 做练习 → 将证据和复盘写入
notes/。
9. 学习资料汇聚(v0.3 自包含)
9.1 背景与动机
OWASP Top 10 2021 把”A02 Cryptographic Failures”与”A05 Security Misconfiguration”放在前列。前者关心”数据怎么保护”,后者关心”配置默认值能不能直接上线”。
历史上踩过的坑:
- 2017 Equifax:Apache Struts OGNL 注入 + 未及时打补丁;
- 2018 Tesla AWS 凭证泄露:Kryptowire 研究公开暴露;
- 2019 Facebook 密码明文存储:内部日志可读;
- 2021 Log4j 默认开启 JNDI:默认配置就是漏洞;
- 2022 LastPass 主密码库泄露:加密 vault + 解密密码一起丢;
- 大量网站至今仍缺 CSP / HSTS / cookie Secure。
这些事件把”密钥管理、默认配置、安全响应头”从可选项变成必需品。
9.2 概念地图
flowchart LR
Crypto[加密与数据保护] --> TLS
Crypto --> KMS[KMS / HSM / Vault]
Crypto --> FieldEnc[字段级加密]
Crypto --> LogMask[日志脱敏]
TLS --> Cipher[Cipher Suite]
TLS --> Cert[证书链]
TLS --> HSTS
KMS --> Vault[HashiCorp Vault]
KMS --> AWS[AWS KMS / Secrets Manager]
KMS --> HSM[Cloud HSM / YubiHSM]
KMS --> Rotate[密钥轮换]
FieldEnc --> Envelope[Envelope encryption]
FieldEnc --> DEK[Data Encryption Key]
FieldEnc --> KEK[Key Encryption Key]
LogMask --> Pino[pino]
LogMask --> Winston[winston]
LogMask --> SLog[结构化日志]
Config[安全配置响应头] --> CSP
Config --> HSTS
Config --> Cookie[Set-Cookie]
Config --> Referrer[Referrer-Policy]
Config --> XFO[X-Frame-Options]
Config --> PP[Permissions-Policy]
CSP --> Nonce[nonce]
CSP --> Hash[sha256]
CSP --> Report[report-uri / report-to]
CSP --> FrameAncestors[frame-ancestors]
Cookie --> Secure
Cookie --> HttpOnly
Cookie --> SameSite
Cookie --> HostPrefix[__Host- 前缀]
HSTS --> Preload[HSTS preload]
HSTS --> IncludeSub[includeSubDomains]
Audit[自动化校验] --> Observatory
Audit --> SecurityHeaders[securityheaders.com]
Audit --> TestSSL[testssl.sh]
关系说明:加密与数据保护负责”数据怎么存、怎么传”;安全配置负责”HTTP 层默认放什么”;两者必须同时上,单一边都留空。
9.3 基础知识讲解
9.3.1 经典论文 / 标准
主推:OWASP Secure Headers + Cryptographic Storage + RFC 6797。备查:NIST SP 800-57、W3C CSP Level 3。
9.3.2 经典书籍
| 资料 | 角色 | 评分 | 链接 |
|---|---|---|---|
| Bulletproof TLS and PKI (Ivan Ristić) | TLS 与 PKI 实战 | 5 | https://www.feistyduck.com/books/bulletproof-tls-and-pki/ |
| Cryptography Engineering (Ferguson 等) | 加密系统设计 | 5 | https://www.schneier.com/books/cryptography-engineering/ |
| Serious Cryptography (Aumasson) | 现代加密工程 | 4 | https://nostarch.com/seriouscrypto |
| Web Application Security (Hoffman) | Web 实战 | 4 | https://www.oreilly.com/library/view/web-application-security/9781492053101/ |
主推:Ristić《Bulletproof TLS and PKI》。备查:Ferguson《Cryptography Engineering》、Aumasson《Serious Cryptography》。
9.3.3 优秀博客 / 文档
| 资料 | 角色 | 评分 | 链接 |
|---|---|---|---|
| Mozilla SSL Configuration Generator | 服务端 TLS 配置 | 5 | https://ssl-config.mozilla.org/ |
| Mozilla MDN — Strict-Transport-Security | HSTS 浏览器行为 | 4 | https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Strict-Transport-Security |
| Mozilla MDN — Content-Security-Policy | CSP 浏览器行为 | 4 | https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy |
| securityheaders.com | 响应头在线评分 | 4 | https://securityheaders.com/ |
| Mozilla Observatory | 综合扫描 | 4 | https://observatory.mozilla.org/ |
| testssl.sh | TLS 配置扫描 | 5 | https://testssl.sh/ |
| Scott Helme — CSP、HSTS、Subresource Integrity | 实战文章 | 4 | https://scotthelme.co.uk/ |
| HSTS Preload | 浏览器预加载列表 | 4 | https://hstspreload.org/ |
| OWASP Cheat Sheet Series | 修复模式 | 5 | https://cheatsheetseries.owasp.org/ |
主推:Mozilla SSL Generator + securityheaders.com + testssl.sh。备查:MDN CSP/HSTS、HSTS preload、Scott Helme。
9.3.4 核心人物
| 人物 | 贡献 | 关键出处 |
|---|---|---|
| Ivan Ristić | Bulletproof TLS / SSL Labs | feistyduck.com |
| Scott Helme | CSP/HSTS/SRI 推广 | scotthelme.co.uk |
| Niels Provos | bcrypt 发明者 | USENIX 1999 |
| Colin Percival | scrypt 发明者 | Tarsnap |
| Phillip Rogaway | AEAD、加密理论 | CS academia |
| Taher Elgamal | SSL 3.0 主导 | TLS 历史 |
| Eric Rescorla | TLS 1.3 主编辑 | RFC 8446 |
主推:Ivan Ristić、Scott Helme。备查:Niels Provos、Colin Percival。
9.3.5 开发方法
| 方法 | 适用 | 关键点 |
|---|---|---|
| Defense in depth | 数据保护 | 传输 TLS + 存储加密 + 字段级加密 + 密钥分层 |
| Envelope encryption | 大量数据加密 | KEK 包 DEK,DEK 加密数据;DEK 可轮换 |
| Key rotation | 密钥生命周期 | 90~365 天轮换;老版本解密保留 |
| Fail closed | 配置 | 默认拒绝;白名单;never * for credentials |
| Report-only → enforce | CSP 切换 | 先 Content-Security-Policy-Report-Only 收集违规,再 enforce |
| Preload谨慎 | HSTS | 一旦加入 preload 列表,难以退出;确保所有子域 HTTPS 可用 |
9.4 经典问题与经典案例
| # | 问题 | 为什么重要 | 最简答案或证据 |
|---|---|---|---|
| 1 | Equifax(2017) | Apache Struts 漏洞 + 未打补丁 | 资产清单 + 补丁窗口 SOP |
| 2 | Tesla AWS 凭证泄露 | 凭证写在公开 repo | KMS + IAM role + secret scan |
| 3 | Facebook 明文密码 | 内部日志可读 | 字段级加密 + 日志白名单 |
| 4 | LastPass 主密码库泄露 | vault 加密 + 主密码弱 | Argon2id + 高强度密码 + MFA |
| 5 | SHA-1 哈希 + 无 salt | 字典攻击秒破 | Argon2id/bcrypt + salting |
| 6 | 数据库泄露字段明文 | PII 直接外泄 | 字段级加密;数据库本身有加密 |
| 7 | HTTP-only 站点 | 攻击者 MITM | HSTS + 强制 HTTPS + preload |
| 8 | cookie 无 Secure | 中间人可读 | Secure + HttpOnly + SameSite=Strict + __Host- 前缀 |
| 9 | CSP 一加就 break | inline script 满天飞 | nonce 或 hash;分阶段推进 |
| 10 | 密钥写在 .env 进 git | 长期泄漏 | KMS;pre-commit 扫 secret;git history 清理 |
9.5 学习难点
概念难点
| 难点 | 为什么会卡 | 突破路径 |
|---|---|---|
| 加密 ≠ 签名 | 都出现密钥 | 写清”谁持有密钥、谁验证、提供什么性质” |
| AEAD 与 CBC 区别 | 老资料还在 CBC | 优先 AES-GCM / ChaCha20-Poly1305;避免自己写 IV |
| HKDF 何时用 | 派生密钥 | 当 secret → key 用 HKDF;PBKDF2 用于密码 |
思维难点
| 难点 | 为什么会卡 | 突破路径 |
|---|---|---|
| “加密就够了” | 密钥一并丢就完蛋 | 密钥分层;KMS;密钥轮换;最小权限访问密钥 |
| CSP 与 inline script 矛盾 | 一加就 break | nonce/hash;评估是否真需要 inline |
| HSTS 首次访问前不生效 | 攻击者首次降级 | preload 列表;提交前评估所有子域 |
工程难点
| 难点 | 为什么会卡 | 突破路径 |
|---|---|---|
| 全站加 CSP 太多 inline script | 改动量大 | 用 webpack-html-csp-plugin 自动注入 nonce |
| 密钥轮换写起来复杂 | 数据量大 | envelope encryption;保留旧 DEK 解密 |
| 日志脱敏漏字段 | 不同模块各自打印 | 集中日志框架 + 字段白名单 + grep 验证 |
9.6 技术标准与接口
9.6.1 Entity
| 名称 | 版本 | 组织 | 状态 | 许可证 |
|---|---|---|---|---|
| OWASP Top 10 | 2021 | OWASP | 现行 | CC BY-SA 4.0 |
| OWASP ASVS | 4.0.3 | OWASP | 现行 | CC BY-SA 4.0 |
| CSP Level 3 | CR | W3C | 现行 | 公开 |
| RFC 6797 — HSTS | 2012 | IETF | 现行 | 公开 |
| RFC 6265 — Cookies | 2011 | IETF | 现行 | 公开 |
| RFC 6265bis + SameSite | 草案 | IETF | 修订 | 公开 |
| NIST SP 800-57 Part 1 Rev 5 | 2020 | NIST | 现行 | 公开 |
| NIST SP 800-38D — GCM | 2007 | NIST | 现行 | 公开 |
| NIST SP 800-131A | 持续 | NIST | 现行 | 公开 |
| RFC 5869 — HKDF | 2010 | IETF | 现行 | 公开 |
| FIPS 140-2/3 | 持续 | NIST | 现行 | 公开 |
| TLS 1.3 — RFC 8446 | 2018 | IETF | 现行 | 公开 |
9.6.2 Scope
- CSP:浏览器侧内容源控制;不替代输入校验;不能挡住所有 XSS;
- HSTS:让浏览器强制 HTTPS;不修复证书错误;
- TLS:保护传输层;不隐藏 IP、流量大小、时序;
- KMS / HSM:管理密钥生命周期;不替代业务访问控制;
- 字段级加密:保护存储层;密钥要单独管;
- 日志脱敏:减少日志泄露面;不替代最小权限数据访问。
9.6.3 Structure
必会字段、接口、API:
- CSP 指令:
default-src、script-src、style-src、img-src、connect-src、frame-ancestors、base-uri、form-action、report-uri、report-to; - cookie 属性:
Secure; HttpOnly; SameSite=Strict/Lax/None; __Host-前缀、Domain、Path、Max-Age; - HTTP 响应头:
Strict-Transport-Security、Referrer-Policy、X-Frame-Options、Permissions-Policy、Cross-Origin-Resource-Policy、Cross-Origin-Opener-Policy、Cross-Origin-Embedder-Policy; - 加密 API:libsodium、cryptography(Python)、crypto(Node)、Go crypto/tls、Java JCE;
- KMS API:AWS KMS / Secrets Manager、GCP KMS、Vault transit;
- 字段级加密:envelope encryption;DEK/KEK;AAD;版本化字段。
9.6.4 Ecosystem
- TLS 库:OpenSSL、BoringSSL、LibreSSL、rustls、Go crypto/tls;
- 密钥管理:HashiCorp Vault、AWS KMS、AWS Secrets Manager、GCP Secret Manager、Azure Key Vault;
- CSP 工具:csp-html-webpack-plugin、csp-evaluator、CSP 生成器;
- 安全扫描:securityheaders.com、Mozilla Observatory、testssl.sh、SSL Labs、Observatory API;
- 结构化日志:pino、winston、logback、structlog;
- 事实标准 vs 标准本身:浏览器 HSTS preload、CSP Level 3 实现差异、SameSite 默认行为(Lax);这些不是 RFC 但部署时要知道。
9.6.5 Depth Tiers
| 层级 | 能力 |
|---|---|
| L0 | 知道 CSP、HSTS、cookie Secure、TLS、KMS 是什么 |
| L1 | 看懂一段含 CSP/HSTS 的响应头和 Argon2id 参数 |
| L2 | 能配置安全响应头基线、字段级加密、密钥轮换 |
| L3 | 能解释 envelope encryption、HSTS preload 风险、CSP nonce 设计、SameSite 行为差异 |
| L4 | 能设计企业密钥治理、跨域隔离、零信任网络 |
本计划目标:L3。
9.6.6 Source
- OWASP 仓库:https://github.com/OWASP/
- NIST 仓库:https://csrc.nist.gov/publications
- W3C CSP:https://www.w3.org/TR/CSP3/
- IETF RFC Editor:https://www.rfc-editor.org/
- HSTS Preload:https://hstspreload.org/
- 引用版本快照日期:2026-07-30。
10. 常见误区
- 用 MD5 / SHA1 存密码;
- 字段”加密”用 ECB 模式;
- 自己写 IV / nonce;
- 密钥写在代码或 .env 进 git;
- KMS 密钥权限过宽(
*resource); - 字段加密但密钥与数据存在同一数据库;
- 不轮换密钥;密钥泄露了也没轮换流程;
- CSP 用
unsafe-inline+unsafe-eval; - HSTS 启用但没
includeSubDomains; - cookie 没
__Host-前缀却写 Domain; Referrer-Policy: unsafe-url;X-Frame-Options: ALLOW-FROM(已废弃);- 以为 HSTS 能阻止首次降级;
- 以为 CSP 能挡住所有 XSS;
Permissions-Policy一次性放过所有特性;- 报告模式(Report-Only)上线即视为完成;
- 部署 HTTPS 但没强制 HTTPS(缺 HSTS / preload);
- 旧版 TLS 1.0/1.1 仍启用;
- 用
*通配符 CORS + credentials; - 在前端 JS 中验证 CSP / 加密(应在后端)。
11. 所有知识点分类(统一规则)
- 编程语言
- 数据结构与算法
- 计算机基础
- 工程技术
- Web 与后端
- 前端与客户端
- 数据与人工智能
- 项目与职业能力
- 安全与可靠性
本计划归属:安全与可靠性 主 + Web 与后端 辅。