我仍然不清楚JWT和CSRF如何一起工作。我理解JWT的基本原理(它是什么以及如何工作)。我也了解与会话一起使用时的CSRF。同样,我了解在localStorage中存储JWT存在风险,这就是为什么你需要CSRF令牌的原因。所以我的问题是,我如何同时使用它们。为了简单起见,假设我有一个登录页面。
1)用户登录后,一旦邮箱和密码被使用,如果用户经过身份验证,则服务器将发送一个CSRF并使用JWT存储httpOnly cookie(如何使用PHP设置cookie)。我理解的是,您可以使用
2)一旦我使用JWT设置了cookie,我如何在随后的请求中发送CSRF令牌?从我所了解的,您可以将它们设置在标头中。因此,如果我发出Ajax请求,我将把它们放在标头中。
3)一旦请求已完成并且CSRF令牌随请求发送。如何进行验证。我应该比较什么?
最后,这种实现是否安全!
我非常感激如果您能够包含尽可能多的细节。
1)用户登录后,一旦邮箱和密码被使用,如果用户经过身份验证,则服务器将发送一个CSRF并使用JWT存储httpOnly cookie(如何使用PHP设置cookie)。我理解的是,您可以使用
header('Set-Cookie: X-Auth-Token=token_value; Secure; HttpOnly;');
请确认是否是这样做的方法。2)一旦我使用JWT设置了cookie,我如何在随后的请求中发送CSRF令牌?从我所了解的,您可以将它们设置在标头中。因此,如果我发出Ajax请求,我将把它们放在标头中。
3)一旦请求已完成并且CSRF令牌随请求发送。如何进行验证。我应该比较什么?
最后,这种实现是否安全!
我非常感激如果您能够包含尽可能多的细节。