如何生成和验证 csrf 令牌

Posted

技术标签:

【中文标题】如何生成和验证 csrf 令牌【英文标题】:how to generate and validate csrf tokens 【发布时间】:2011-08-24 01:43:29 【问题描述】:

生成 csrf 令牌和验证的最佳方法是什么。据我所知,即使您在“发布”表单中有隐藏的表单字段,黑客也可以使用 ajax 简单地获取该表单,获取 csrf 令牌并向站点发送另一个请求以提交表单。

如果我们要检查发送给我们的标头...那么黑客可以简单地将 csrf 令牌发送到服务器端脚本,然后该脚本将模拟 http 标头。

那么如何实际生成和验证 csrf 令牌?

【问题讨论】:

【参考方案1】:

所有基于令牌的 CSRF 保护都可以通过 XSS 被击败,这似乎是你“已经能够收集到的”。这对你来说是一本好书:OWASP on CSRF

【讨论】:

所以如果我在我的网站上解决 XSS,我将能够使用基于令牌的 CSRF 预防? 基本上是的,但要做到这一点绝非易事。如果您遵循该链接中的指南,您的状态会非常好。

以上是关于如何生成和验证 csrf 令牌的主要内容,如果未能解决你的问题,请参考以下文章

PHP CSRF 表单令牌 + 验证建议

查询如何存储和处理框架CSRF令牌

基本 .ajax 发布到 rails 3.2.2 脚手架,生成“警告:无法验证 CSRF 令牌真实性”

Rails 3:无法验证 CSRF 令牌的真实性

SPA 使用的经过身份验证的 Rest API:如何获取用于登录和注册表单的 CSRF 令牌?

spring 如何使用 _csrf 参数或 X-CSRF-TOKEN 标头在内部验证 csrf 令牌?