【问题标题】:Codeigniter csrf protection error:Codeigniter csrf 保护错误:
【发布时间】:2011-10-23 02:12:15
【问题描述】:

我正在使用 CI 2。我在配置文件中启用了 CSRF 保护:

$config['csrf_protection']   =  TRUE;
$config['csrf_token_name']   =  'sitename';
$config['csrf_cookie_name']  =  'sitename';
$config['csrf_expire']       =  7200; 

我只使用 Codeigniter 表单。有时我在提交表单或登录时收到错误“您无权执行此操作”。

如果我刷新并重试,那么一切正常。为什么会这样?

【问题讨论】:

  • 那么您提交表单之前的时间可能超过 7200 秒...?或者您是否使用 Ajax 提交表单?因为我在处理代码点火器中的 ajax 表单和 csrf 时遇到问题......这就是我遇到你的问题的方式...... :)
  • 问题确实是由于 CSRF cookie 过期。使用 AJAX 时不难解决,但当用户刚刚处于非活动状态时就有点痛苦了。

标签: codeigniter csrf protection


【解决方案1】:

您可以在 cookie 过期时间触发 JS 确认框,要求用户延长会话。如果您想继续使用 CSRF,我认为这是您可以获得的最优雅的解决方案。

【讨论】:

    【解决方案2】:

    发生这种情况是因为您的 CSRF 令牌过期,这是正确的过程,将 CSRF 令牌的过期时间从 7200 秒增加到与您的需求更相关的时间(7200 / 60 / 60 = 2 小时)。

    在此处详细了解 CSRF 为您做了什么:
    http://en.wikipedia.org/wiki/Cross-site_request_forgery

    【讨论】:

      【解决方案3】:

      这是由于令牌过期而发生的。您可以简单地扩展核心安全类并自动刷新页面。

      Check the solution here

      【讨论】:

        猜你喜欢
        • 2023-03-08
        • 1970-01-01
        • 2013-09-20
        • 2012-02-03
        • 2015-04-26
        • 2017-07-05
        • 2015-08-11
        • 2017-06-14
        • 2021-10-06
        相关资源
        最近更新 更多