【问题标题】:What are the risks of Storing Credit Card / Bank Account Information in LocalStorage?在 LocalStorage 中存储信用卡/银行账户信息有哪些风险?
【发布时间】:2018-10-06 05:33:15
【问题描述】:

我最近注意到我使用的一个账单支付网站似乎将我的银行账户和信用卡号存储在浏览器的 LocalStorage 中。数据存储在 JSON 对象中,该对象被字符串化为 LocalStroage。没有对数据进行特殊编码、混淆或加密。

虽然这最初是非常令人反感的,而且绝对看起来像是一种不合标准的工程实践,但我很难想到这种实现可能会被有意义地破解:

  • 由于站点是 HTTPS,因此无法注入中间人攻击 读取 LocalStorage 的恶意 JavaScript。
  • Lo​​calStorage 不是 在 HTTP 和 HTTPS 之间在同一个域上共享,所以这将规则 通过非 SSL 连接进行脚本注入。
  • 如果 Web 应用程序未能清理用户提交的内容,则可能会注入恶意脚本以从 LocalStorage 中窃取数据,但它也可以直接从 JavaScript 的内存中窃取这些数据。因此,使用 LocalStorage 的风险级别没有什么不同。
  • 恶意浏览器插件可能会从 LocalStorage 中读取数据,但这与恶意插件可能会从网页上抓取数据或从 JavaScript 内存中读取数据的风险并没有什么不同。
  • 如果用户在公共计算机上登录此站点,那么有人可能会从 LocalStorage 中窃取他们的付款数据。但这与某人从屏幕上窃取他们的数据并没有太大的不同,如果他们让自己登录到应用程序中。我假设 LocalStorage 在注销时被清除(这可能是一个过于慷慨的假设)。

这种做法还引发了哪些其他安全漏洞?

【问题讨论】:

  • 这是个好问题。但是,我自己也很好奇这可能会带来哪些漏洞。在适当的情况下,我现在正在构建一个应用程序,我注意到很多网站都在本地存储中使用哈希算法存储登录凭据,例如用户的电子邮件、用户名和密码。我已经阅读了这方面的内容,很多人都说过要混合使用 cookie 和本地存储,但我自己也在寻找首选标准。
  • 不确定注销时清除本地存储是什么意思。浏览器不会自动执行此操作。您是否建议开发人员编写代码来清除它?通常他们不会。

标签: javascript security local-storage


【解决方案1】:

如果网络应用未能清理用户提交的内容,可能是 可以注入恶意脚本以从 LocalStorage 窃取数据, 但它也可以直接从 JavaScript 的内存中窃取这些数据。 因此,使用 LocalStorage 的风险级别没有什么不同。

我不同意。如果必须将脚本注入到非常特定的网页才能访问用户输入的敏感数据,或者 JavaScript 是否可以注入该主机上的任何页面并简单地访问 LocalStorage 并发送某处的数据。在后一种情况下,用户在任何时候访问的一个页面就足以进行攻击。

此外,您必须考虑到 LocalStorage 通常由 Web 浏览器以纯文本形式存储。

恕我直言,在 LocalStorage 中存储敏感数据的唯一方法是让服务器使用经过身份验证的密码,使用只有服务器知道的用户特定密钥对其进行加密。如果以后要再次使用数据,客户端可以将其发送到服务器,服务器可以对其进行解密并使用它。当然,敏感部分永远不应该被发送回客户端(例如,作为网页上的预填表格)。

【讨论】:

    猜你喜欢
    • 2018-10-20
    • 2014-10-16
    • 1970-01-01
    • 2011-06-05
    • 2014-06-08
    • 2015-03-14
    • 2019-06-15
    • 1970-01-01
    • 2016-11-06
    相关资源
    最近更新 更多