首页 > 解决方案 > 如何保护 Auth0 认证的 REST 服务免受 XSRF 和会话劫持?

问题描述

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

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

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

标签: csrfauth0session-hijacking

解决方案


Auth0 用来防止 CSRF 攻击的策略是使用随机数,他们称之为state parameter. 这state是与身份验证请求一起生成的,然后用于将请求与从身份验证接收到的响应相关联。(来自关于如何减轻 CSRF 攻击的 Auth0 文档)

Auth0 文档中有关 state 参数的相关信息:

与即将启动的每个身份验证请求相关联的唯一且不可猜测的值。它是唯一且不可猜测的值,可让您通过确认来自响应的值是否与您期望的值(您在启动请求时生成的值)匹配来防止攻击。

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


推荐阅读