如何保护经过 Auth0 身份验证的 REST 服务免受 XSRF 和 Session 劫持?

How to protect an Auth0 authenticated REST service from XSRF and Session Hijacking?

一种常见的情况:SPA + REST。如果要放弃 Auth0 并使用 JWT 对 Web 用户进行身份验证,则必须将服务器在登录时提供的 XSRF 令牌存储在 cookie 中,并在请求 headers 中将其与 JWT 一起发送。

在相关的官方 Auth0 指南中,https://auth0.com/docs/architecture-scenarios/spa-api,根本没有提到 XSRF 令牌。如果有人从用户那里窃取了访问令牌怎么办?他们可以为该用户访问我的 REST API 吗?

A​​uth0 有另一个指南 Preventing Cross-site Request Forgery (XSRF or CSRF),但它非常简短,我看不出它如何解决我描述的问题。

Auth0 用于防止 CSRF 攻击的策略是使用 nonce, which they call a state parameter. This state is generated with the authentication request, and then used to correlate the request with the response received from the authentication. (from Auth0 docs on how to mitigate CSRF attacks)

相关信息from the Auth0 docs on the state parameter

a unique and non-guessable value associated with each authentication request about to be initiated. It’s that unique and non-guessable value that allows you to prevent the attack by confirming if the value coming from the response matches the one you expect (the one you generated when initiating the request).

如果您在 SPA 中使用 Auth0.js,系统会自动为您处理此随机数或状态生成和验证。