【问题标题】:Is it bad practice to cache username and password on the client?在客户端缓存用户名和密码是不好的做法吗?
【发布时间】:2017-06-24 06:29:46
【问题描述】:

假设我创建了一个与 ASP.NET API 链接的 AngularJS Web 应用程序。向用户询问他们的用户名和密码,将其存储在缓存(客户端)中,然后在整个用户会话中使用它来进行 api 调用是否可以接受?

当他们注销时,缓存将被删除。

【问题讨论】:

    标签: angularjs asp.net-web-api


    【解决方案1】:

    这可能是你能做的最糟糕的做法。您永远不应该将密码保存在任何地方,即使是在您的数据库中。 (您将哈希存储在数据库中,但这是单独的主题)

    一种常见的情况是,当用户输入他的用户名/密码时,您的(或身份验证)服务器会生成访问令牌(现在是 Json Web 令牌),您将其存储在本地某处。 您正在寻找将访问令牌短暂的生命周期与某种刷新令牌相结合。

    所有保存在 javascript 端的东西都可能容易受到 XSS 和其他类型的攻击。

    【讨论】:

      【解决方案2】:

      不,这绝不是一个好习惯。您应该做的是在浏览器中保存会话或访问令牌并使用它来代替

      【讨论】:

        【解决方案3】:

        将用户名和密码存储在客户端缓存中确实不是一个好习惯(顺便问一下,您使用的是什么缓存?)。原因是 JavaScript 更容易被破解,而且您无法不惜一切代价完全控制客户端的浏览器。

        您可能想要通过名为 JSON Web Tokens (JWT) 的东西来代替。

        这些公开了在客户端存储用户凭据(谨防存储机密信息,例如密码)的安全方式,并且可以轻松用于 API 调用。有现成可用的 SDK 以您选择的语言提供;参考上面的链接。

        【讨论】:

          猜你喜欢
          • 2011-06-14
          • 2016-07-24
          • 1970-01-01
          • 1970-01-01
          • 2018-04-25
          • 1970-01-01
          • 1970-01-01
          • 2020-06-05
          • 2017-11-28
          相关资源
          最近更新 更多