【问题标题】:Are there any security concerns storing HTTP Basic authorization header in localStorage?在 localStorage 中存储 HTTP 基本授权标头是否存在任何安全问题?
【发布时间】:2014-10-11 00:34:39
【问题描述】:

我正在构建一个访问私有 API 的 Web 应用程序。我正在使用的 API 使用基于 TLS 的 HTTP 基本身份验证。我的客户已为 Web 应用请求“记住我”功能,以便用户可以在给定设备上保持持久身份验证。

我的快速和肮脏的解决方案是在验证后将Authorization 标头存储在localStorage 中。当然,如果可以完全访问用户的设备,那么任何值得称职的人都可以从 localStorage 复制 auth 标头并对其进行解码以检索用户的登录名/密码组合。

除了设备整体受损之外,将此类敏感数据存储在 localStorage 中是否还有其他安全隐患? localStorage 是否可以作为敏感数据(例如密码)的存储库?如果不是,您将如何在用户设备上保存这些数据而不是单个浏览器会话?

(我希望每个人都可以使用他或她的私钥......密码是如此 90 年代)

编辑在阅读HTML5 localStorage security 之后,显然在localStorage 中存储敏感数据通常是一个坏主意,但是在这种情况下,还有什么更好的选择来实现身份验证持久性?

【问题讨论】:

  • 你可以考虑加密它;我在网上找到了解决方案。它工作得很好。这篇博文是在考虑 PhoneGap 的情况下编写的,但也适用于其他场景:onallthingsweb.wordpress.com/2013/12/02/…
  • @Brian Mains:如果运行时的 JS 可以解密它——那么它也可以被恶意用户解密。
  • 这是 web 还是 phonegap?我们不知道环境,但是是的,或者当然这是一个问题......

标签: javascript html local-storage


【解决方案1】:

我认为在用户端存储与登录名或密码相关的内容是个坏主意。

但是一旦用户登录,您可以在用户端和您的数据库中存储一个随机字符串(例如随机散列)。当用户回来时,你可以比较两者,如果它们相同,你就可以登录用户。您可以要求用户输入密码以进行敏感操作(更改密码或登录等)。因此,即使哈希被盗,也没有人能够获得对该帐户的完全访问权限。

编辑:这个概念已经与cookies 一起使用。我从来没有用 localStorage 测试过它。

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 2020-11-13
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    相关资源
    最近更新 更多