【发布时间】:2015-09-28 10:50:37
【问题描述】:
我现在已经有两周的时间来学习和构建AngularJS+ PHPsystem,但我仍在努力进行身份验证。我已经阅读了很多关于AngularJS 的帖子,但似乎没有一篇考虑到身份验证的安全方面。当我在另一篇文章中询问AngularJS 存储的安全性时,我也得到了一个有趣的回应,并获得了两个指向 Stormpath 博客的链接,这些链接涵盖了处理 tokens 时的安全领域。
关于AngularJS 的大多数教程和示例似乎都采用JWT 方法并通过HTTP headers 将该令牌发送到您的REST API,但鉴于令牌存储在Javascript 中,这可能会使其遭受多重攻击类型。其中之一是MITM。为了防止这种类型的攻击,解决方案是设置一个带有 HttpOnly 和 Secure 标志的 cookie。现在令牌在每个请求上都被传递,它没有被 Javascript 存储并且它是安全的。但是,这会在您对用户进行身份验证时提出一个问题:当您只处理来自同一服务器的 HTTP 请求时,这与使用会话有何不同?
在检查用户是否已经登录时,我们通常检查是否存在$_SESSION 变量,比如uid。现在,在基于令牌的方法中,我们将令牌发送到 HTTP headers 并读取该令牌,然后对其进行验证并获取用户信息。然后在AngularJS我们得到成功的响应并返回一个promise。
会话具有由服务器处理的优势。他们创建一个会话,如果它仍然存在,他们会自动处理它的销毁。在处理基于令牌的身份验证时,如果用户没有自己销毁它,您必须使用预定脚本处理它的到期、刷新和销毁。这似乎工作量太大了。
【问题讨论】:
-
很可能很难找到任何与 Angular 相关的安全性信息,因为 Angular 与它几乎没有关系。你必须在你的服务和 http 请求中实现你的身份验证技术,但这不是一个角度的事情,这只是一般的客户端开发。
标签: javascript php angularjs security session