You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建离线密码加解密网站:存储bcrypt哈希至localStorage的安全考量

在localStorage存储密码哈希前需考虑的安全问题
  • XSS攻击导致的哈希泄露:localStorage受同源策略保护,但如果页面被注入恶意XSS脚本,脚本能直接读取其中的内容。哪怕是bcrypt哈希,攻击者拿到后可以通过彩虹表、离线暴力破解尝试还原原密码——尤其是用户密码强度较低时,破解成功率会大幅提升。更关键的是,如果你的加密逻辑依赖密码派生密钥,哈希泄露可能间接威胁到加密文本的安全性。

  • 本地设备层面的访问风险:localStorage是明文存储在用户设备的浏览器文件中的,任何能物理接触设备、获取浏览器权限的主体(比如共用设备的人、恶意软件、恶意浏览器插件)都能直接读取哈希。这和服务器端数据库有多层防护的情况完全不同,本地存储几乎没有额外的访问屏障。

  • 第三方脚本的潜在威胁:如果你的网站引入了第三方脚本(比如统计工具、广告组件),一旦第三方脚本被篡改或者本身存在恶意,就能轻松读取localStorage中的哈希。哪怕是合规的第三方,也存在因自身漏洞导致数据泄露的风险。

  • 离线破解的便利性:bcrypt的慢哈希特性主要是为了抵御服务器端的暴力破解,但哈希存到localStorage后,攻击者可以将其导出,在离线环境下不受速率限制地尝试破解,完全避开了你服务器端的风控、限流等防护措施。

  • 无自动过期带来的持久风险:localStorage没有内置的过期机制,哈希会一直存储在设备中,直到用户主动清除浏览器数据或你手动删除。如果用户设备被盗、遗失,或者长时间闲置,哈希会持续暴露在风险中。

  • 与在线数据的一致性问题:如果用户在在线状态下修改了密码,服务器端的哈希会更新,但本地存储的旧哈希如果没有同步更新,会导致离线校验失效。另外,若服务器端因密码泄露需要强制重置密码,本地留存的旧哈希依然存在,可能引发后续的逻辑冲突或安全隐患。

内容的提问来源于stack exchange,提问作者Wor Chan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:39:22