在客户端缓存用户名和密码是不好的做法吗?

时间:2017-06-24 06:29:46

标签: angularjs asp.net-web-api

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

当他们退出时,缓存将被删除。

3 个答案:

答案 0 :(得分:3)

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

通常情况之一是,当用户键入其用户名/密码时,您的(或身份验证)服务器会生成访问令牌(现在是Json Web令牌),您可以在本地存储。

是您正在寻找的将访问令牌短寿命与某种刷新令牌相结合的方法。

在javascript端保存的所有内容都可能容易受到XSS和其他类型的攻击。<​​/ p>

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

您可能希望通过名为JSON Web Tokens (JWT)的内容。

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