本地草稿加密
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f1b049da/qtn20268850 技能到 AI 助手。
技能介绍
草稿明文裸奔的隐患
在开发 Web 应用时,我们经常需要将用户的未完成草稿(如包含手机号、备注等敏感信息的表单数据)缓存在浏览器的 localStorage 中。然而,localStorage 的数据是以明文存储的,这意味着任何能够接触到该设备的人,只需随手打开开发者工具(DevTools),就能在 Application 面板中一眼看穿所有敏感数据。对于一些需要本地暂存隐私数据的 Demo 或轻量级应用来说,这构成了最直接的隐私泄露风险。
核心能力与关键步骤
该技能基于 crypto-js 库,在浏览器端提供 AES 对称加密能力,将草稿加密后再存入本地存储。其核心工作流非常直接:
- 保存草稿:用户输入口令,前端调用
saveEncryptedDraft将序列化后的草稿字符串加密,并写入localStorage。 - 读取草稿:再次打开时,要求输入同一口令,通过
decryptDraft解密还原。 - 错误处理:口令为空时拒绝执行;解密失败时返回明确错误,坚决不输出半截明文。
需要注意的是,若与 lowdb 或 SuperJSON 等工具联用,必须遵循“先序列化,再加密字符串”的原则。
适用边界与安全注意
必须明确,这种前端本地加密仅能防范“随手打开 DevTools 看一眼明文”级别的低级风险,它绝不是服务端的安全边界。由于浏览器环境的开放性,前端加密无法对抗本机木马或同域 XSS 攻击。因此,严禁将密钥或口令硬编码在源码或仓库中,必须由用户输入或通过安全会话持有,也不要使用类似 123456 的默认口令。请合理评估其防护等级,避免过度宣称“绝对安全”而误导最终用户。
使用场景
- 开发表单类Web应用时,需缓存含手机号的未完成草稿,避免明文存localStorage
- 制作加密存储Demo时,需展示AES加密后再存本地的完整流程
- 开发轻量级工具时,需在导出文件前对内容加密,防止明文泄露
- 与lowdb联用缓存数据时,需先序列化再加密字符串后存储
适合人员
- 前端开发者,需保护本地草稿中的隐私数据,避免DevTools直接查看
- Demo开发者,要展示加密存储流程,验证前端加密方案可行性
- 轻量级应用开发者,需低成本实现本地数据加密,平衡安全与性能
- 数据缓存开发者,与lowdb等工具联用时,需确保加密与序列化顺序正确