我正在尝试了解 ASP.NET Web API 2 中基于声明的身份验证。在我的应用程序中,我使用 VS 2013 模板,该模板实现 OAuth 2.0 并使用不记名 token (我记得是 JWT)。我的问题是 - 在客户端保留 token 的最佳方法是什么。 Badrinarayanan Lakshmiraghavan 在他的书中将不记名 token 描述为
A bearer token is like cash: finders, keepers.
因此,将其保存到 cookie 中是否安全?这是否意味着窃取 cookie 的人将获得应用程序的完全访问权限?另一方面,我可以在将 token 保存到 cookie 之前使用哈希对其进行加密。这样就足够安全了吗?还有其他选择吗?我在 stackoverflow 上看到很少有人提出类似的问题,但从未找到令人满意的答案。
最佳答案
is it safe to save it to a cookie?
没有。 Cookie 可以通过 XSS 攻击(和其他向量)被窃取 此外,这可能容易受到 CSRF 的影响,因为任何请求都会自动提交 cookie。
I could encrypt the token using hash just before saving it to the cookie
这也行不通。哈希不是一种安全的加密方式(而且不允许解密)
Are there any other alternatives?
基本上,您应该通过安全连接 (HTTPS) 将 token 提供给用户,但为了安全起见,他们应该手动提交 token (再次通过 HTTPS)
关于security - 如何在客户端保留不记名 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21877097/