csrf - 如何保护 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),但它非常简短,我没有看到它如何解决我描述的问题。
解决方案
Auth0 用来防止 CSRF 攻击的策略是使用随机数,他们称之为state parameter
. 这state
是与身份验证请求一起生成的,然后用于将请求与从身份验证接收到的响应相关联。(来自关于如何减轻 CSRF 攻击的 Auth0 文档)
与即将启动的每个身份验证请求相关联的唯一且不可猜测的值。它是唯一且不可猜测的值,可让您通过确认来自响应的值是否与您期望的值(您在启动请求时生成的值)匹配来防止攻击。
如果您在 SPA 中使用 Auth0.js,则会自动为您处理此随机数或状态生成和验证。
推荐阅读
- microsoft-graph-api - Microsoft Graph API 的驱动器搜索结果中缺少 createdBy 和 lastModifiedBy 字段
- javascript - 在 JS 中导入 .dat 文件
- windows - 使用 Powershell 脚本自动执行组策略 Windows 操作系统设置
- boolean-algebra - 如何使用布尔代数简化?
- tensorflow - 在张量流中实现余弦相似度
- java - 按回车时程序不会继续。如何修复此错误?
- sqlite - Sqlite fts4如何通过中间字母匹配文本
- javascript - jQuery - 在鼠标单击或按住时为单元格着色
- python - 我将如何进行图像标记/分类?
- cmake - 我得到 CXX 编译器识别的错误是未知的