11

默认情况下,Rails 中的表单 post CSRF 保护会为用户创建一个真实性令牌,该令牌仅在用户会话更改时才会更改。我们的一位客户对我们的网站进行了安全审核,并将其标记为问题。

审计员的声明是,如果我们也有一个 XSS 漏洞,攻击者可以获取另一个用户的真实性令牌并利用它进行 CSRF 攻击,直到用户的会话过期。

但在我看来,如果我们有这样的 XSS 漏洞,攻击者可以很容易地获取另一个用户的会话 cookie 并直接登录该用户。或者甚至只是在用户受到攻击时从脚本调用我们的 REST Api。在这种情况下,能够发起 CSRF 攻击似乎并没有变得更糟……问题在于 XSS 漏洞。

我错过了什么吗?Rails 中默认的 CSRF 保护是否存在真正的问题?

4

1 回答 1

11

你是完全正确的。基于令牌的 CSRF 保护是最常见的,只要您针对 XSS 测试应用程序就可以了。

在某些情况下,无论 XSS 如何,CSRF 仍然可以停止。例如,对于您的密码更改论坛,要求他们知道当前密码。除非他知道当前密码,否则黑客将无法伪造此请求,这是一个有争议的问题。

另一种方法是要求验证码来解决该请求。我推荐使用 reCapthca。

于 2010-03-31T22:42:55.047 回答