这个JWT实现是否在仍然允许我访问有效负载的情况下防止XSS和CSRF攻击?
我正在为我的web应用程序实现JWT身份验证和授权,并且可能需要一些帮助来识别我方法中的漏洞。我见过许多简单地说将访问令牌设置为httpOnly cookie的方法,但是,在我的访问令牌中有一些声明我的前端需要访问。我想出了这个方法来解决这个问题 登录时,用户提供用户名和密码,以交换两项:这个JWT实现是否在仍然允许我访问有效负载的情况下防止XSS和CSRF攻击?,jwt,Jwt,我正在为我的web应用程序实现JWT身份验证和授权,并且可能需要一些帮助来识别我方法中的漏洞。我见过许多简单地说将访问令牌设置为httpOnly cookie的方法,但是,在我的访问令牌中有一些声明我的前端需要访问。我想出了这个方法来解决这个问题 登录时,用户提供用户名和密码,以交换两项: CSRF令牌 JWT访问令牌的头和签名 JWT访问令牌的有效负载 JWT刷新令牌 在我的方法中,所有这些项目都设置为cookie。JWT刷新令牌以及JWT访问令牌的头和签名都存储在httpOnly安全cook
header.payload.signature
,那么我将访问令牌拆分为header.signature
和payload
。这些值存储在各自的cookie中
当我提出需要授权的请求时,我的后端会抓取所有JWT访问令牌cookie,将它们放回一起,然后检查签名
这种方法是否在提供对JWT有效负载的安全访问的同时减轻了XSS和CSRF攻击?JWT令牌用于身份验证。它被生成并存储在客户机中,当它过期时,会发出新的令牌 CSRF可以是基于会话或基于请求的不同类型
我认为JWT不能取代CSRF,XSSJWT令牌用于身份验证。它被生成并存储在客户机中,当它过期时,会发出新的令牌 CSRF可以是基于会话或基于请求的不同类型
我不认为JWT可以取代CSRF,XSS,这听起来不可行。基本上,您的代码可以访问的任何内容,攻击者的代码也可以访问。所以,你不想要任何“我的前端可以访问”的东西。在我看来,唯一能提供最佳覆盖率的组合是:
- HttpOnly+安全+SameSite cookies()
- 使用CSRF令牌保护POST/PUT/DELETE
- 防止注入脚本的内容安全策略
除此之外,越简单越好。试图推出一个聪明的解决方案是坏事的诀窍。这听起来好像不管用。基本上,您的代码可以访问的任何内容,攻击者的代码也可以访问。所以,你不想要任何“我的前端可以访问”的东西。在我看来,唯一能提供最佳覆盖率的组合是:
- HttpOnly+安全+SameSite cookies()
- 使用CSRF令牌保护POST/PUT/DELETE
- 防止注入脚本的内容安全策略
除此之外,越简单越好。试图推出一个聪明的解决方案是坏事的诀窍。我明白你想在这里说什么。您希望使用httpOnly选项存储cookie,但随后就失去了访问前面的令牌和解码有效负载的可用性,这就是JWT令牌有用的原因(提供额外的有效负载)。我也面临同样的问题。我认为这是你必须做的权衡。但只要你不储存任何敏感信息,我认为你的方法就足够好了。我理解你想在这里说什么。您希望使用httpOnly选项存储cookie,但随后就失去了访问前面的令牌和解码有效负载的可用性,这就是JWT令牌有用的原因(提供额外的有效负载)。我也面临同样的问题。我认为这是你必须做的权衡。但是,只要你没有存储任何敏感信息,那么我认为你的方法就足够好了。对不起,这个答案与所问的问题无关。对不起,这个答案与所问的问题无关。