我现在已经两周的时间学习并构建了一个AngularJS
+ PHP
系统,我仍在努力进行身份验证。我一直在阅读大量有关AngularJS
的帖子,而且他们中的一个似乎没有考虑认证的安全性方面。当我询问AngularJS
存储在另一篇文章中的安全性时,我也有了一个有趣的回应,并且在与tokens
打交道时,与Stormpath的博客有两个很好的链接,涵盖了安全领域。AngularJS安全令牌与会话
大多数教程和有关AngularJS
例子似乎是采取JWT
方法,并通过HTTP headers
发送该令牌到你的REST API
,但鉴于该令牌存储在Javascript这可以将其暴露于多种攻击类型。其中之一是MITM。为了抵御这种类型的攻击,解决方案是使用HttpOnly和Secure标志设置cookie。现在令牌被传递给每个请求,它不会被Javascript存储并且是安全的。但是,这在您验证用户身份的地方引发了问题:当您仅处理源自同一服务器的HTTP请求时,这与使用会话有什么不同?
当检查用户是否已经登录时,我们通常会检查是否存在$_SESSION
变量,比如说uid
。现在基于令牌的方法,我们发送令牌HTTP headers
并读取该令牌,然后验证它并获取用户信息。在AngularJS
我们然后得到成功的回应,并返回一个承诺。
会话具有被服务器处理的优点。他们创建一个会话,如果它仍然存在,它们会自动处理它的销毁。在处理基于令牌的身份验证时,如果用户没有自行销毁,则必须使用预定的脚本来处理它的过期,刷新和销毁。这似乎工作太多了。
它可能很难找到任何关于安全性的信息,因为角度与它有很少或根本没有关系。你必须在你的服务和http请求中实现你的认证技术,但这不是一件有意义的事情,这只是一般的客户端开发。 –