【发布时间】:2014-07-31 06:28:08
【问题描述】:
在 Rails 中,使用设计,如果 CSRF 检查失败,则清除用户的当前会话,即将用户注销,因为服务器认为这是一次攻击(这是正确/期望的行为)。 但是请求已完成,因此仍会创建用户记录。黑客然后可以正确登录。 一旦设计意识到 auth_token 不正确,我该如何阻止该方法继续执行?
【问题讨论】:
标签: ruby-on-rails devise csrf
在 Rails 中,使用设计,如果 CSRF 检查失败,则清除用户的当前会话,即将用户注销,因为服务器认为这是一次攻击(这是正确/期望的行为)。 但是请求已完成,因此仍会创建用户记录。黑客然后可以正确登录。 一旦设计意识到 auth_token 不正确,我该如何阻止该方法继续执行?
【问题讨论】:
标签: ruby-on-rails devise csrf
Devise 不对身份验证令牌进行任何检查 - 它是执行此操作的动作控制器(尽管它确实在您的控制器上调用 handle_unverified_request 以便您可以自定义行为)。在 Rails 4 及更高版本中,您还可以指定当 auth 令牌无效时默认发生的情况:
protect_from_forgery with: :exception
引发异常,这将停止处理请求。
但是我不确定这会给你带来什么 - CSRF 是为了让攻击者无法滥用用户已经登录到你的应用程序这一事实,但如果攻击者拥有一组有效的凭据,那么他们就不需要首先要做 CSRF。
【讨论】: