【问题标题】:Codeigniter csrf protection without form validation没有表单验证的 Codeigniter csrf 保护
【发布时间】:2011-10-15 07:48:42
【问题描述】:

我在 Codeigniter 中启用了 csrf 保护。使用form_open()我能够产生一个隐藏的csrf值,应该在我的控制器中进行验证。但是,我没有提交任何输入字段,而只是通过表单操作传递了一个 url 参数。

在我的控制器中,我不需要设置验证规则,所以我有

function delete_post($post_id = '') //post id passed via 3rd URL segment
{ 
    if (is_int($post_id) && valid_post($post_id)) //valid_post() returns true if post id exists
    {   
       $this->Posts_model->delete_post_model($post_id);         
       redirect('site');  
    }                   
}

如果没有验证规则,Csrf 保护似乎不起作用。是否可以在不通过隐藏输入传递post_id 的情况下完成这项工作?

【问题讨论】:

    标签: php forms validation codeigniter csrf


    【解决方案1】:

    如您所见 in the code of the Security class,CSRF 保护仅适用于 POST 数据(表单验证实际上也适用于 POST 数据)。

    您应该使用 CodeIgniter 方式并使用 POST 请求。如果您使用的是 AJAX,则只需将 GET 更改为 POST,如果您使用的是表单,请将方法设置为 post。如果你做不到那你就得和CodeIgniter核心代码作斗争,所以试着解释一下原因。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-17
      • 2013-09-20
      • 2012-02-03
      • 1970-01-01
      • 2015-04-26
      • 2011-10-23
      • 2018-11-03
      • 1970-01-01
      相关资源
      最近更新 更多