【发布时间】:2018-10-06 05:33:15
【问题描述】:
我最近注意到我使用的一个账单支付网站似乎将我的银行账户和信用卡号存储在浏览器的 LocalStorage 中。数据存储在 JSON 对象中,该对象被字符串化为 LocalStroage。没有对数据进行特殊编码、混淆或加密。
虽然这最初是非常令人反感的,而且绝对看起来像是一种不合标准的工程实践,但我很难想到这种实现可能会被有意义地破解:
- 由于站点是 HTTPS,因此无法注入中间人攻击 读取 LocalStorage 的恶意 JavaScript。
- LocalStorage 不是 在 HTTP 和 HTTPS 之间在同一个域上共享,所以这将规则 通过非 SSL 连接进行脚本注入。
- 如果 Web 应用程序未能清理用户提交的内容,则可能会注入恶意脚本以从 LocalStorage 中窃取数据,但它也可以直接从 JavaScript 的内存中窃取这些数据。因此,使用 LocalStorage 的风险级别没有什么不同。
- 恶意浏览器插件可能会从 LocalStorage 中读取数据,但这与恶意插件可能会从网页上抓取数据或从 JavaScript 内存中读取数据的风险并没有什么不同。
- 如果用户在公共计算机上登录此站点,那么有人可能会从 LocalStorage 中窃取他们的付款数据。但这与某人从屏幕上窃取他们的数据并没有太大的不同,如果他们让自己登录到应用程序中。我假设 LocalStorage 在注销时被清除(这可能是一个过于慷慨的假设)。
这种做法还引发了哪些其他安全漏洞?
【问题讨论】:
-
这是个好问题。但是,我自己也很好奇这可能会带来哪些漏洞。在适当的情况下,我现在正在构建一个应用程序,我注意到很多网站都在本地存储中使用哈希算法存储登录凭据,例如用户的电子邮件、用户名和密码。我已经阅读了这方面的内容,很多人都说过要混合使用 cookie 和本地存储,但我自己也在寻找首选标准。
-
不确定注销时清除本地存储是什么意思。浏览器不会自动执行此操作。您是否建议开发人员编写代码来清除它?通常他们不会。
标签: javascript security local-storage