【发布时间】:2017-06-24 06:29:46
【问题描述】:
假设我创建了一个与 ASP.NET API 链接的 AngularJS Web 应用程序。向用户询问他们的用户名和密码,将其存储在缓存(客户端)中,然后在整个用户会话中使用它来进行 api 调用是否可以接受?
当他们注销时,缓存将被删除。
【问题讨论】:
假设我创建了一个与 ASP.NET API 链接的 AngularJS Web 应用程序。向用户询问他们的用户名和密码,将其存储在缓存(客户端)中,然后在整个用户会话中使用它来进行 api 调用是否可以接受?
当他们注销时,缓存将被删除。
【问题讨论】:
这可能是你能做的最糟糕的做法。您永远不应该将密码保存在任何地方,即使是在您的数据库中。 (您将哈希存储在数据库中,但这是单独的主题)
一种常见的情况是,当用户输入他的用户名/密码时,您的(或身份验证)服务器会生成访问令牌(现在是 Json Web 令牌),您将其存储在本地某处。 您正在寻找将访问令牌短暂的生命周期与某种刷新令牌相结合。
所有保存在 javascript 端的东西都可能容易受到 XSS 和其他类型的攻击。
【讨论】:
不,这绝不是一个好习惯。您应该做的是在浏览器中保存会话或访问令牌并使用它来代替
【讨论】:
将用户名和密码存储在客户端缓存中确实不是一个好习惯(顺便问一下,您使用的是什么缓存?)。原因是 JavaScript 更容易被破解,而且您无法不惜一切代价完全控制客户端的浏览器。
您可能想要通过名为 JSON Web Tokens (JWT) 的东西来代替。
这些公开了在客户端存储用户凭据(谨防存储机密信息,例如密码)的安全方式,并且可以轻松用于 API 调用。有现成可用的 SDK 以您选择的语言提供;参考上面的链接。
【讨论】: