CSRF保护和跨站点表单访问

时间:2010-05-06 10:15:43

标签: ruby-on-rails ruby security authentication csrf

我正在进行跨站点身份验证(某些域具有通用身份验证)。所以我想从其他人那里向主域发送身份验证数据(登录名,密码)。

我应该如何使用protect_from_forgery以及如何检查从有效域收到的数据?

我现在想的是关闭会话控制器的protect_from_forgery并检查接收数据的域名。

但也许我可以为一个域配置CSRF保护吗?

2 个答案:

答案 0 :(得分:2)

保护工作检查会话[:_ csrf_token],因此如果您的所有域中的会话相同,则protect_from_forgery可以正常工作。

答案 1 :(得分:1)

您的目标是CSRF漏洞的定义。强制用户登录或注销通常对攻击者没有用。为了解决这个问题,攻击者必须知道用户名和密码,这会破坏另一个用户经过身份验证的会话中“会话骑行”的目的。作为一个写CSRF exploits的铁杆黑客,我告诉你这不是一个严重的问题。

修补此问题的一种简单方法是检查引用并确保登录请求来自域的白名单。修补此问题的另一种方法是使用类似reCapthca的Capthca。是的,你没有看错。之所以能够解决这个问题是因为攻击者无法使用javascript或flash来解决问题,以“伪造”有效的登录请求。