【问题标题】:Post CSRF check, devise still runs full function后 CSRF 检查,设计仍然运行完整的功能
【发布时间】:2014-07-31 06:28:08
【问题描述】:

在 Rails 中,使用设计,如果 CSRF 检查失败,则清除用户的当前会话,即将用户注销,因为服务器认为这是一次攻击(这是正确/期望的行为)。 但是请求已完成,因此仍会创建用户记录。黑客然后可以正确登录。 一旦设计意识到 auth_token 不正确,我该如何阻止该方法继续执行?

【问题讨论】:

    标签: ruby-on-rails devise csrf


    【解决方案1】:

    Devise 不对身份验证令牌进行任何检查 - 它是执行此操作的动作控制器(尽管它确实在您的控制器上调用 handle_unverified_request 以便您可以自定义行为)。在 Rails 4 及更高版本中,您还可以指定当 auth 令牌无效时默认发生的情况:

    protect_from_forgery with: :exception
    

    引发异常,这将停止处理请求。

    但是我不确定这会给你带来什么 - CSRF 是为了让攻击者无法滥用用户已经登录到你的应用程序这一事实,但如果攻击者拥有一组有效的凭据,那么他们就不需要首先要做 CSRF。

    【讨论】:

    • 完美,非常感谢。我只是希望每当用户做了一些奇怪的事情时发生异常
    猜你喜欢
    • 2016-10-25
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 2018-05-26
    • 2013-05-23
    • 2023-02-24
    相关资源
    最近更新 更多