1

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

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

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

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

4

2 回答 2

2

保护工作与检查会话 [:_csrf_token] 一起工作,因此如果您的会话在您的所有域中都相同,则protect_from_forgery 可以工作。

于 2010-05-06T11:04:40.277 回答
1

您的目的是 CSRF 漏洞的定义。强制用户登录或注销通常对攻击者没有用处。要完成此黑客攻击,攻击者必须知道用户名和密码,这违背了在另一个用户的经过身份验证的会话上“会话骑行”的目的。作为编写CSRF 漏洞利用的铁杆黑客,我告诉你这不是一个严重的问题。

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

于 2010-05-06T18:17:17.470 回答