【问题标题】:Securing HTML LocalStorage保护 HTML LocalStorage
【发布时间】:2019-12-31 08:01:42
【问题描述】:

我目前正在开发一个带有 laravel 后端的 Angular 应用程序。我通常会将用户数据作为 JSON 存储在 LocalStorage 中。这个新应用程序处理安全信息,因此不能以明文形式存储。

数据库已加密,流量使用 SSL,但在本地,我想在本地加密数据并将其存储,因此用户无需在每次打开应用程序时都登录。

我当前的工作流程是用户登录、验证用户并从服务器检索用户数据。 数据在 Angular 中保存为服务,并存储为 CryptoJS.AES 加密的 JSON 字符串,用户密码作为密码。 然后在下一次加载应用程序时,应用程序检查 LocalStorage 中是否有任何数据,如果有,用户只需输入密码,CryptoJS.AES 解密将解密 json 并再次存储为服务变量。

是否有任何缺陷或漏洞或更好的库可用于这种想法?

【问题讨论】:

    标签: html angular encryption local-storage angular-local-storage


    【解决方案1】:

    查看此问题的一种方法是,用户的计算机已经受到登录名/密码的保护。本地存储只能由您的站点或用户通过开发者控制台访问。因此,加密本地存储并没有真正获得任何收益。

    实际上,通过在本地存储密码哈希值,您会引入潜在的攻击向量。

    【讨论】:

    • 我目前正在使用 Angular 和 Cordova 来构建智能手机应用程序,以便人们更容易使用它。鉴于 LocalStorage 还以明文形式存储,我想防止任何其他应用程序或根攻击探测信息。主要是第三方 API 密钥,例如 Stripe Connect 用户密钥,它们可以在我这边使用一些额外的保护。
    【解决方案2】:

    这种身份验证的现代标准是Json Web Tokens, JWT。它们非常适合 Angular 和其他 SPA,易于实施且安全。

    【讨论】:

    • 我目前使用 Laravel 的 JWT 来验证操作。我使用 LocalStorage 的原因是还为该用户存储其他信息,包括其他 API(例如 Stripe Connect)的任何密钥,我可以从存储中删除这些信息,只保留 JWT
    • 令牌可以保存你想要的任何数据,真的。 @Musa 你仍然可以安全地保存到本地存储
    • 我之前只使用过 JWT 来验证用户操作,我实际上并没有使用它来存储数据,所以我可能会研究一下,谢谢你的想法
    • 我查看了我目前正在使用的护照,并且无法在 JWT 有效负载中存储额外数据,因此我仍然需要 LocalStorage github.com/laravel/passport/issues/94的安全存储方法>
    • 改用完全支持JWT的库,或者自己实现,很简单
    【解决方案3】:

    查看? SecurityJS.128。它是一个 JavaScript 客户端库,您可以隐藏 sessionStoragelocalStorage。你可以使用windowsecureStorage API

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 2015-10-29
      • 2016-11-24
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多