在 Angular 单页应用程序(Angular + REST API)上,我使用JWT身份验证。让我们假设 JWT 令牌是正确生成的并且是真正随机的(你无法预测它)。
这个 JWT 令牌是否足以防止跨站请求伪造 (CSRF)?换句话说,JWT 也足以作为反 CSRF 令牌吗?
在 Angular 单页应用程序(Angular + REST API)上,我使用JWT身份验证。让我们假设 JWT 令牌是正确生成的并且是真正随机的(你无法预测它)。
这个 JWT 令牌是否足以防止跨站请求伪造 (CSRF)?换句话说,JWT 也足以作为反 CSRF 令牌吗?
如果 JWT 在标头中,您应该是安全的。攻击者无法欺骗受害者浏览器设置标头(除非 CORS 允许,或者她利用旧的Flash 漏洞利用)。但是可以说攻击者可以控制标头。那她应该怎么设置呢?她不会知道的。
另一方面,如果 JWT 在 cookie 中,您将与普通会话 cookie 一样容易受到攻击。因此,您是否易受攻击与您使用哪种令牌(JWT 或会话 ID)无关,而与您放置它的位置(标头或 cookie)有关。
即使身份验证带有自动 CSRF 保护,您也可能需要考虑添加显式 CSRF 保护。总是存在有人更改身份验证机制而没有意识到它具有双重目的的风险。