Codeigniter CSRF令牌问题

Dex*_*xty 7 php frameworks codeigniter token

我做了一个简单的注册/新闻网站,但我有一个奇怪的问题.有些人会收到错误消息

一个错误遇到您所请求是不允许的行动.

我已经尝试过google,发现当CSRF设置为true时,人们遇到了同样的问题.但是,我并不发生在每个人,只是一小群人.我正在使用form_open和form_close,我可以看到隐藏字段(令牌).

我正在使用最新版本的Codeigniter 2.0.2

这是我的控制器

    function __construct() {
    parent::__construct();
    session_start();
}

function index() {

    $this->load->model('beta_signup_model');

    $this->form_validation->set_rules('mail','e-mail','required|valid_email|xss_clean|callback__mail_check');

    // Check for errors
    if($this->form_validation->run() == FALSE) {

        // The system found a form validation error


    } else {

        // No errors found
        $_SESSION['mail_success'] = 1;
        $_SESSION['mail'] = $this->input->post('mail');

        redirect(base_url() . 'confirm');

    }

    ///// FILLS OUT INPUT FIELDS /////

    // Loads field_populator_helper
    $this->load->helper('field_populator_helper');

    // Defines input field names
    $input_names = array(
                    'mail',
    );

    // Defines default values   
    $default_values = array(
                    'Skriv inn e-posten din..',
    );

    // Auto-populates fields with blur and focus
    $data['field_populator'] = populateFields($input_names, $default_values);

    $this->load->view('frontpage_view', $data);

}
Run Code Online (Sandbox Code Playgroud)

小智 1

当隐藏字段中的令牌与 cookie 中的令牌匹配时,CSRF 有效。检查四件事:

  1. 不要使用本机 php 会话(session_start 等)。切换到 CI 中的 Session 类。http://codeigniter.com/user_guide/libraries/sessions.html

  2. 检查 /application/config/config.php 中的 cookie 配置

  3. 检查表单中令牌的值,每次页面刷新是否不同?

  4. 也许尝试从https://bitbucket.org/ellislab/codeigniter-reactor/downloads下载当前版本的 CI