security - 我可以使用 JWT 作为反 CSRF 令牌吗
问题描述
我想看看我是否可以在不必在服务器上的 redis 中的用户会话中存储任何其他信息的情况下完成防止 CSRF。在请求删除帐户的表单后,我是否可以使用随机字符串 (uuid4) 签署 JWT 令牌,并使用过期时间保密并将结果发送给客户端。提交表单后,我将验证 JWT。
像这样的东西:
const tokenToSend = jwt.sign(uuid4(), SECRET, { expire: 60 })
解决方案
描述 Csrf 攻击的一种简单方法是,受害者(登录了易受攻击的网站 A)浏览了第三个网站 B,该网站向网站 A 发出伪装成受害者的请求。因此,为了防止 csrf 攻击,我们必须设置请求(我们想要保护的)不可预测,因此攻击者无法在之前准备好请求。如果你使用 jwt 作为 csrf 令牌,你必须使这个 jwt 对每个请求都是唯一的。
推荐阅读
- python - 有没有一种方法可以将选项重新分配给 ipywidgets 中的下拉菜单
- php - Docker swarm 未正确跨其他工作节点复制卷
- javascript - 如何将本地服务器转换为在线服务器 Node.js
- flutter - 使用 dio 上传图片列表
- azure - 尝试在 Logic 应用中创建存储帐户时出现“资源无效”消息
- arrays - C中的二维字符数组
- azure - 获取 Azure 中所有服务主体的证书状态,例如证书是否无效,以及它们最终在 Azure 中连接的内容
- vba - 如何用多行字符串替换?
- java - 使用构造函数初始化最终属性是否正确?
- c++ - 如何在 API 中隐藏迭代器以使用 std::map 包装器中的项目