我正试图在ASP.NET Web API 2中了解基于声明的身份验证。在我的应用程序中,我使用VS 2013模板,该模板实现了OAuth 2.0并使用了承载令牌(我记得JWT)。我的问题是 - 在客户端持久化令牌的最佳方法是什么。在他的书Badrinarayanan Lakshmiraghavan中将持票人描述为
持票人令牌就像现金:发现者,守护者。
因此,将它保存到cookie是否安全?是不是意味着谁会窃取cookie将获得对应用程序的完全访问权限?另一方面,我可以在将令牌保存到cookie之前使用hash加密令牌。它足够安全吗?还有其他选择吗?我已经看到几个问题在stackoverflow上提出类似的问题,但从未找到令人满意的答案。
答案 0 :(得分:4)
将它保存到cookie是否安全?
没有。可以通过XSS攻击(以及其他向量)窃取Cookie 此外,这可能会受到CSRF的影响,因为cookie会随着任何请求自动提交。
我可以在将令牌保存到cookie之前使用hash加密令牌
这也行不通。哈希不是一种加密的安全方式(而且不允许解密)
还有其他选择吗?
基本上,您应该通过安全连接(HTTPS)将令牌提供给用户,但是他们应该手动提交它以确保安全性(再次通过HTTPS)