Security 如何在客户端持久化承载令牌

Security 如何在客户端持久化承载令牌,security,cookies,asp.net-web-api,access-token,claims-based-identity,Security,Cookies,Asp.net Web Api,Access Token,Claims Based Identity,我试图了解ASP.NET Web API 2中基于声明的身份验证。在我的应用程序中,我使用VS2013模板,它实现了OAuth 2.0并使用了承载令牌(我记得是JWT)。我的问题是-在客户端持久化令牌的最佳方法是什么。在他的书中,Badrinarayanan Lakshmiraghavan将持票人代币描述为 不记名代币就像现金:发现者,保管者 因此,将其保存到cookie中是否安全?这难道不意味着无论谁偷了cookie,都可以完全访问应用程序吗?另一方面,我可以在将令牌保存到cookie之前使用

我试图了解ASP.NET Web API 2中基于声明的身份验证。在我的应用程序中,我使用VS2013模板,它实现了OAuth 2.0并使用了承载令牌(我记得是JWT)。我的问题是-在客户端持久化令牌的最佳方法是什么。在他的书中,Badrinarayanan Lakshmiraghavan将持票人代币描述为

不记名代币就像现金:发现者,保管者

因此,将其保存到cookie中是否安全?这难道不意味着无论谁偷了cookie,都可以完全访问应用程序吗?另一方面,我可以在将令牌保存到cookie之前使用哈希对其进行加密。安全吗?还有其他选择吗?我见过一些关于stackoverflow的类似问题,但从未找到令人满意的答案

将其保存到cookie中是否安全

不可以。可以通过XSS攻击(和其他载体)窃取Cookie 此外,这可能容易受到CSRF的影响,因为cookie将随任何请求自动提交

我可以在将令牌保存到cookie之前使用哈希对其进行加密

这也行不通。散列不是加密的安全方式(而且不允许解密)

还有其他选择吗


基本上,您应该通过安全连接(HTTPS)将令牌提供给用户,但他们应该手动提交令牌以确保安全(再次通过HTTPS)

“基本上,您应该通过安全连接(HTTPS)将令牌提供给用户,但他们应该手动提交令牌以确保安全(再次通过HTTPS)”。仍然没有完全回答这个问题。这是否意味着只要我使用HTTPS,就可以使用cookie?不。通过XSS攻击,cookie很容易被盗。Cookie也会随任何web请求自动提交,因此它们容易受到跨站点请求伪造的影响。查看()以了解更多信息。Web API 2中承载令牌的默认时间跨度为14天。那么你如何在客户端保存这个令牌呢?啊。如果承载令牌在14天后过期,您可以将其存储在cookie中。重要的是不要使用cookies来获取永久的秘密。除了承载令牌外,还要确保使用随机令牌支持状态更改操作(如果用户更改设置、创建/删除物品、购买物品),以保护CSRF。这并不能回答问题。JWT令牌应该如何在客户端持久化?