Rails默认的CSRF保护是不安全的吗?

时间:2010-03-31 22:30:06

标签: ruby-on-rails security xss csrf

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

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

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

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

1 个答案:

答案 0 :(得分:11)

你完全正确。基于令牌的CSRF保护是最常见的,只要您测试XSS的应用程序就应该没问题。

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

另一种方法是要求Captcha为该请求求解。我建议使用reCapthca。