我不想更改配置文件中的默认设置,默认为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不起作用,它总是空值:
答案 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();?>