CalcGuide · 技术博客主页 / 一页纸学习计划
🟠

敏感数据保护与安全配置:加密、密钥管理与 HTTP 响应头基线

分类:安全与可靠性 · 路径:docs/topics/web-security-crypto-and-config/README.md

#crypto#kms#csp#hsts#headers

覆盖 A02/A05:KMS/HSM、密钥轮换、字段级加密、TLS、日志脱敏、CSP、HSTS、cookie Secure/SameSite、Referrer-Policy

父主题

Web 安全:从 OWASP Top 10 到漏洞响应

子主题(0)

敏感数据保护与安全配置:加密、密钥管理与 HTTP 响应头基线

0. 元信息

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. TLSTLS 1.3 握手、证书链、SNI、ALPN、OCSP StaplingTLS 配置基线testssl.sh 评 A+;HSTS 启用
3. 密钥管理KMS / HSM / Vault接入 AWS KMS 或 Vault密钥不落代码/配置文件;轮换周期明确
4. 字段级加密Envelope encryption、AES-GCM、版本化字段PII 字段加密 + 解密数据库泄露后字段仍受保护
5. 日志脱敏pino/winston + 字段白名单 + 集中过滤脱敏中间件grep 不到 token / 密码 / 完整 PII
6. CSPdefault-srcscript-src nonce、report-only → enforceCSP 报告与落地报告 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.shCI 检查评分跌出 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.mdnotes/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.shnotes/day6.jsonnotes/day6.mdtest -s notes/day6.md && grep -q "运行" notes/day6.md
7回顾 Day 1~6,写 300 字复盘并列出 10 个自测问答notes/week1-retrospective.mdwc -w notes/week1-retrospective.md ≥300 且 grep -c "问:" ≥10

5. 阶段通用验收

6. 最终验收

学完后应能完成威胁建模、选择合适的安全机制、实现最小防御链路、编写负面测试、读取日志或扫描证据,并向团队解释安全权衡和残余风险。

量化标准:

7. 综合项目

首选项目:安全 Web 服务实验室(本主题对应的 “)。实现一个最小 HTTP/API 服务,故意保留一条可控弱点,再用安全实现和自动化测试修复它。

备选项目:安全审计 CLI。读取请求、配置或依赖清单,输出风险、证据、严重性和修复建议。

必做要求:

项目根目录必须包含 README.mdnotes/design.mdnotes/test.mdnotes/retrospective.md。README 需写需求说明、数据结构/工具选择理由、核心流程、模块化实现、边界测试、编译/运行说明、目录结构和复盘记录;notes/design.md 写威胁模型与流程图,notes/test.md 写每组输入/期望/实际输出,notes/retrospective.md 写用时、难点、收获和下一步。

本主题贡献

8. 推荐开源资料

阶段角色资料名链接用法
1入门OWASP Web Security Testing Guidehttps://owasp.org/www-project-web-security-testing-guide/按主题阅读测试方法并转成自己的检查项
2官方文档MDN Web Securityhttps://developer.mozilla.org/en-US/docs/Web/Security查阅浏览器安全机制、Cookie、CORS、CSP
3规范/标准OWASP Cheat Sheet Serieshttps://cheatsheetseries.owasp.org/实现前逐条对照防御清单
4工具/源码OWASP ZAPhttps://www.zaproxy.org/对本地项目做代理扫描,保存报告
5练习平台PortSwigger Web Security Academyhttps://portswigger.net/web-security完成对应实验并记录请求、漏洞和修复
6参考标准NIST Cybersecurity Frameworkhttps://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”放在前列。前者关心”数据怎么保护”,后者关心”配置默认值能不能直接上线”。

历史上踩过的坑:

这些事件把”密钥管理、默认配置、安全响应头”从可选项变成必需品。

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 Top 10 2021 — A02 Cryptographic Failures风险分类5https://owasp.org/Top10/A02_2021-Cryptographic_Failures/
OWASP Top 10 2021 — A05 Security Misconfiguration风险分类5https://owasp.org/Top10/A05_2021-Security_Misconfiguration/
OWASP Cryptographic Storage Cheat Sheet字段级加密5https://cheatsheetseries.owasp.org/cheatsheets/Cryptographic_Storage_Cheat_Sheet.html
OWASP Password Storage Cheat Sheet密码哈希5https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html
OWASP Logging Cheat Sheet日志脱敏4https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html
OWASP Secure Headers Project响应头基线5https://owasp.org/www-project-secure-headers/
W3C CSP Level 3CSP 规范5https://www.w3.org/TR/CSP3/
RFC 6797 — HSTSHSTS 规范5https://www.rfc-editor.org/rfc/rfc6797
RFC 6265 — CookiesCookie 规范4https://www.rfc-editor.org/rfc/rfc6265
RFC 6265bis(修订 + SameSite)cookie 修订4https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis
NIST SP 800-57密钥管理建议5https://csrc.nist.gov/publications/detail/sp/800-57-part-1/rev-5/final
NIST SP 800-38DGCM 模式4https://csrc.nist.gov/publications/detail/sp/800-38d/final
RFC 5869 — HKDF密钥派生4https://www.rfc-editor.org/rfc/rfc5869

主推: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 实战5https://www.feistyduck.com/books/bulletproof-tls-and-pki/
Cryptography Engineering (Ferguson 等)加密系统设计5https://www.schneier.com/books/cryptography-engineering/
Serious Cryptography (Aumasson)现代加密工程4https://nostarch.com/seriouscrypto
Web Application Security (Hoffman)Web 实战4https://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 配置5https://ssl-config.mozilla.org/
Mozilla MDN — Strict-Transport-SecurityHSTS 浏览器行为4https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Strict-Transport-Security
Mozilla MDN — Content-Security-PolicyCSP 浏览器行为4https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy
securityheaders.com响应头在线评分4https://securityheaders.com/
Mozilla Observatory综合扫描4https://observatory.mozilla.org/
testssl.shTLS 配置扫描5https://testssl.sh/
Scott Helme — CSP、HSTS、Subresource Integrity实战文章4https://scotthelme.co.uk/
HSTS Preload浏览器预加载列表4https://hstspreload.org/
OWASP Cheat Sheet Series修复模式5https://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 Labsfeistyduck.com
Scott HelmeCSP/HSTS/SRI 推广scotthelme.co.uk
Niels Provosbcrypt 发明者USENIX 1999
Colin Percivalscrypt 发明者Tarsnap
Phillip RogawayAEAD、加密理论CS academia
Taher ElgamalSSL 3.0 主导TLS 历史
Eric RescorlaTLS 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 → enforceCSP 切换Content-Security-Policy-Report-Only 收集违规,再 enforce
Preload谨慎HSTS一旦加入 preload 列表,难以退出;确保所有子域 HTTPS 可用

9.4 经典问题与经典案例

#问题为什么重要最简答案或证据
1Equifax(2017)Apache Struts 漏洞 + 未打补丁资产清单 + 补丁窗口 SOP
2Tesla AWS 凭证泄露凭证写在公开 repoKMS + IAM role + secret scan
3Facebook 明文密码内部日志可读字段级加密 + 日志白名单
4LastPass 主密码库泄露vault 加密 + 主密码弱Argon2id + 高强度密码 + MFA
5SHA-1 哈希 + 无 salt字典攻击秒破Argon2id/bcrypt + salting
6数据库泄露字段明文PII 直接外泄字段级加密;数据库本身有加密
7HTTP-only 站点攻击者 MITMHSTS + 强制 HTTPS + preload
8cookie 无 Secure中间人可读Secure + HttpOnly + SameSite=Strict + __Host- 前缀
9CSP 一加就 breakinline 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 矛盾一加就 breaknonce/hash;评估是否真需要 inline
HSTS 首次访问前不生效攻击者首次降级preload 列表;提交前评估所有子域

工程难点

难点为什么会卡突破路径
全站加 CSP 太多 inline script改动量大用 webpack-html-csp-plugin 自动注入 nonce
密钥轮换写起来复杂数据量大envelope encryption;保留旧 DEK 解密
日志脱敏漏字段不同模块各自打印集中日志框架 + 字段白名单 + grep 验证

9.6 技术标准与接口

9.6.1 Entity

名称版本组织状态许可证
OWASP Top 102021OWASP现行CC BY-SA 4.0
OWASP ASVS4.0.3OWASP现行CC BY-SA 4.0
CSP Level 3CRW3C现行公开
RFC 6797 — HSTS2012IETF现行公开
RFC 6265 — Cookies2011IETF现行公开
RFC 6265bis + SameSite草案IETF修订公开
NIST SP 800-57 Part 1 Rev 52020NIST现行公开
NIST SP 800-38D — GCM2007NIST现行公开
NIST SP 800-131A持续NIST现行公开
RFC 5869 — HKDF2010IETF现行公开
FIPS 140-2/3持续NIST现行公开
TLS 1.3 — RFC 84462018IETF现行公开

9.6.2 Scope

9.6.3 Structure

必会字段、接口、API:

9.6.4 Ecosystem

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

10. 常见误区

11. 所有知识点分类(统一规则)

  1. 编程语言
  2. 数据结构与算法
  3. 计算机基础
  4. 工程技术
  5. Web 与后端
  6. 前端与客户端
  7. 数据与人工智能
  8. 项目与职业能力
  9. 安全与可靠性

本计划归属:安全与可靠性 主 + Web 与后端 辅。


直接依赖(0)

查看知识图谱