数码在线
白蓝主题五 · 清爽阅读
首页  > 演示制作

敏感信息能否放入缓存中 实用操作步骤与避坑指南

缓存里放密码?真有人这么干过

前两天同事老张赶演示文稿,为了省事,把测试用的用户登录数据直接塞进了浏览器的 localStorage 里。结果客户现场一打开,调试工具一翻,账号密码全露了。场面一度很安静。

缓存的本质是临时仓库

不管是 localStorage、sessionStorage,还是内存缓存、CDN 缓存,它们的设计初衷都是提升访问速度。比如你做个产品介绍页,图片和文案缓存一下,下次打开快一点。但这个“快”是有代价的——缓存的数据往往不受严格保护。

很多人以为“我只是临时存一下”,但“临时”可能变成“永久”。用户的设备谁说得准?公共电脑、别人借你手机看一眼,或者浏览器插件偷偷读取,风险就在那儿。

哪些算敏感信息?别自己骗自己

身份证号、手机号、密码、API 密钥、会话 token,这些明眼人一看就知道不能乱放。但有些边界情况容易被忽略:比如用户行为记录、未公开的产品参数、内部测试链接。这些一旦泄露,轻则被竞品盯上,重则被拿去撞库。

有次做后台管理系统演示,为了展示流畅,把 mock 数据里的虚拟用户信息缓存了。结果忘了清,第二天晨会上领导点开就看到“张三,男,1988,已婚,住址:朝阳区某小区”——虽然是假数据,但观感极差。

技术手段不是万能护身符

有人说,我加密一下总行了吧?Base64 算不算?哈希一下行不行?

<script>
  localStorage.setItem('userToken', btoa('secret-123'));
</script>

上面这段代码,看着像加密,其实 anyone 能 ato(base64 解码)。真正的加密需要密钥管理,而密钥放哪儿?又回到原点。

就算用了 AES 加密,密钥硬编码在前端代码里,跟没加密区别不大。攻击者反向一下,照样还原。

正确的做法其实很简单

演示系统该用 mock 数据就用 mock,别图省事接真实接口。缓存只放无害内容:主题色、页面布局偏好、静态资源路径。敏感操作一律走服务端,前端只管展示结果。

比如要展示用户登录状态,缓存一个布尔值 isLogin 就够了,别把整个用户对象拍进去。token 存 sessionStorage 比 localStorage 强点,至少关掉浏览器就没了,但也不能高枕无忧。

最稳妥的方式是:敏感信息不落地。每次需要时,由后端验证后动态返回,前端用完即弃。