【问题标题】:Session Token Authentication Security会话令牌认证安全
【发布时间】:2015-07-07 22:52:33
【问题描述】:
我需要一些关于使用会话令牌对用户进行身份验证的建议。我正在构建一个 AngularJS 应用程序,它使用 API 与后端绑定。我只构建前端,而不是后端。该文档指出,对 API 的所有调用都在请求正文 (POST) 中附加了一个会话令牌。
我想了解将此令牌存储在 localStorage 中的安全性。这就是我现在存储它并检索它并将其附加到每个 API 请求的地方。登录后,服务器将会话令牌发送到正文中,我从那里保存。
没有关于应与向服务器发出的请求一起发送的 x-access-token 标头的文档。它没有被检查服务器端。这意味着什么?我觉得如果没有这个额外的安全层,它很容易受到攻击。
我主要关心的是此设置的安全性。我想知道最好的设置是什么,以确保此应用尽可能安全,并建议更改后端设置方式以促进此操作。
谢谢!
【问题讨论】:
标签:
angularjs
authentication
token
【解决方案1】:
正如您所说,您只处理 UI 部分而不是后端。由后端团队确保正确评估标头并强制执行安全性(顺便说一句,请求标头不属于请求正文)。只需按照他们所说的将令牌放入 x-access-token 标头中即可。
将令牌存储在 localStorage 中可以让您对 cookie 进行更多控制:您不会意外地将其发送到不必要的 URL。但是,较旧的浏览器不支持它 - 您可能需要为此使用 shim。
在 SPA 的情况下,您可以考虑根本不存储令牌:可以在每次访问您的应用程序时获取它,然后将其存储在 angularjs 中的服务中,但这取决于您的获取/登录操作是如何实现的(是否总是互动的,需要多长时间等)。
【解决方案2】:
我建议使用 $cookies 而不是 localstorage。由于 localstorage 不支持某些旧版浏览器。
我正在使用 cookie 将令牌存储在我的项目中