Codeigniter:csrf不工作就是这种情况

时间:2015-03-02 16:52:55

标签: codeigniter csrf

我不想更改配置文件中的默认设置,默认为FALSE。但我想仅以联系方式使用CSRF(其他形式不需要):

这是我的控制者:

class Welcome extends CI_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->helper('form_helper');
        $this->load->library('session');
    }

    public function index()
    {
        $this->config->set_item('csrf_protection', TRUE);
        $this->load->view('welcome_message');
    }
}

结束我的观点:

<div id="container">
    <?php echo form_open(NULL); ?>

    </form>
</div>

但是CSRF不起作用,它总是空值:

enter image description here

1 个答案:

答案 0 :(得分:0)

如果启用csrf必须使用codeigniter表单帮助程序函数,是否在每个表单上的config.php上启用了CSRF。

http://www.codeigniter.com/user_guide/libraries/security.html

http://www.codeigniter.com/user_guide/helpers/form_helper.html

更改

$this->load->helper('form_helper');

$this->load->helper('form');

<强>应用/配置/ config.php中

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

我认为不能这样使用。 $this->config->set_item('csrf_protection', TRUE);

在每张表单上,您必须使用<?php echo form_open('yourcontrollerfunction');?>

如果 Null 喜欢你的返回空必须有控制器名称你可能需要包含index.php如果没有设置htaccess或路由..

<?php echo form_open('your_controller_name_or_function');?>

<?php echo form_close();?>

<?php echo form_open('index.php/your_controller_name_or_function');?>

<?php echo form_close();?>