安全与边界
这一页把「我们怎么保护你的数据」「你能怎么自己验证」「我们做不到什么」分开写清楚,不吹。
一、数据放在哪
| 数据 | 去哪 | 默认 |
| 学习进度、错题、打卡、模考成绩、偏好 | 你自己设备的浏览器(localStorage) | 不上传 |
| 同上(开启云同步后) | Cloudflare KV,加密后存放 | 可选、默认关闭 |
| 你主动提问的题目与上下文 | AI 服务商(生成回答用) | 仅在使用 AI 时 |
| 崩溃堆栈与大致设备信息 | 匿名错误日志(不含学习数据) | 被动、可拦截 |
二、端到端加密具体怎么做
- 同步密码只在本机经 PBKDF2-SHA256(15 万次迭代) 派生两样东西:AES-256-GCM 加密钥(只存在内存里)与 SHA-256 指纹(64 位十六进制,作为云端记录名)。
- 上传的是密文,服务器只拿到密文与不可逆指纹:它没有你的密码,也没有派生密钥,无法解密。
- 同步接口另有来源校验与限流:跨站请求一律拒绝,超频返回 429。
三、你可以自己验证的四步
- 应用内「🔍 加密自证」:取回云端属于你的那条记录,显示长度与开头字符,并在密文里搜索明文标记(如
vet_recite_v1)——搜不到就说明上传的确实是密文;同时用你的密码能解开它,证明密钥正确。
- 看网络请求:按 F12 → Network,开启云同步后改动一点进度,看
PUT /api/sync 的请求体:里面是 {"key":"<64 位指纹>","data":"<base64 密文>"},看不到任何题目文字。
- 看前端加密代码:本应用的页面源码就是全部程序(静态站点),搜
kvKeys / kvEncrypt / kvDecrypt 即可看到密钥派生与加解密实现。
- 本地留底:用「🔐 导出加密备份」把进度加密成一份本机文件,随时可离线还原——不依赖任何云端。
诚实写明边界:本应用由个人开发,未开源、未经第三方安全审计。上面四步能排除「服务器拿到明文」,但不能替代独立审计。因此我们始终建议:导出一份本地备份,不要把唯一副本只放在云端。
四、我们做不到什么(也说清楚)
- 没有账号体系,也没有服务等级承诺(SLA):站点跑在 Cloudflare Pages 免费层上,可能因维护、升级、合规或平台原因临时中断;中断前会尽量在应用内提示。
- 换设备/清缓存会丢进度:这是「纯本机存储」换来的隐私与离线能力,代价就在这——所以请用导出备份或云同步。
- 内容不保证 100% 无误:题目与解析由备考资料整理 + AI 辅助生成,可能疏漏或不准确;以教材、官方考纲与招生院校信息为准。发现错题请点题卡上的「⚠️ 这题有问题」,或发邮件告知。
- AI 功能需要联网,断网时只有背诵、刷题、模考、默写这些本地功能可用;AI 输出仅供辅助理解,不能当作标准答案。
- 题库是公开的前端资源:任何人都能查看本页源码里的题目数据。我们把精力放在「整理与默写编排」上,不指望靠隐藏资源来保护它。
▶ 打开小程序隐私政策用户协议