跳转到内容
天空之翼
↑↓选择·Enter跳转·Esc关闭由 Pagefind 提供索引
EN
本文导航

页面加密

基于 Web Crypto 的客户端页面加密——AES-256-GCM、PBKDF2-SHA-256,静态产物零明文。

任意文档页都可以设置密码保护。渲染后的页面(文本、代码块、图片—— Markdown 与 Expressive Code 处理后的一切)在构建期整体加密,在浏览器端 经 Web Crypto API 解密。静态产物只含密文——没有密码,也没有明文正文。

属性值
认证加密AES-256-GCM(防篡改 + 完整性校验)
密钥派生PBKDF2-SHA-256,310,000 次迭代(OWASP 建议)
盐 / IV每次构建随机 16 字节盐、随机 12 字节 IV
作用域绑定AAD celplume-protected-content:1:page:<id>——密文无法跨页重放
明文泄露无——RSS 不含正文;/<id>.md 与 llms-full.txt 以提示行替代整篇正文
---
title: 私密手记
encrypted: true
password: '一串足够强的密码'
passwordHint: '我最喜欢的编辑器'
---
# 这段内容将加密发布
frontmatter 之下的一切都会在构建期加密。
字段类型必填默认值说明
encryptedboolean可选false标记页面为加密页
passwordstring必填—解锁密码;为空时构建直接失败(fail-closed)
passwordHintstring可选—展示在密码框下方的提示
  1. 访客打开页面,看到解锁门。
  2. 密码在本地派生 AES 密钥(PBKDF2,31 万次迭代)并解密载荷;GCM 校验 会拒绝错误密码与从其他页面复制的密文。
  3. 解密后的 HTML 替换解锁门,Docs Kit 运行时对其中的交互组件重新挂钩。
  4. 已解锁内容在 sessionStorage 中保持 30 分钟——切页后返回无需重复输入。 密码本身绝不落盘。
  • 加密页的目录在解锁前为空(没有可索引的标题)。
  • Pagefind 只索引解锁门,不索引加密正文。
  • description frontmatter 仍为明文(供搜索引擎与订阅源使用),请勿 放入敏感信息。
  • 忘记密码不可恢复:密钥仅在访客输入的那一刻存在。