用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3047|回复: 0
收起左侧

[讨论/交流] 开启csrf ,ajax的时候,提示The action you have requested is not allowe

[复制链接]
发表于 2012-9-23 20:22:53 | 显示全部楼层 |阅读模式
本帖最后由 zsj1029 于 2012-9-23 21:19 编辑

ajax  的时候提示 The action you have requested is not allowed
开启了csrf 跨站请求伪造 防范的缘故  具体名词解释http://baike.baidu.com/view/1609487.htm
config 中的
$config['csrf_protection'] = true;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
把$config['csrf_protection'] = false;
ajax的时候就不会在报错了 ,或者ajax不重要的post请求改为get估计也行

但是有人说了 我就是想开启最高安全防范跨站请求伪造怎么办
看了文档的孩子都知道http://codeigniter.org.cn/user_guide/libraries/security.html最下面
调用ci的form_open的时候,看源文件能找到紧跟form标签后面有个隐藏域,里面就放着随机生成的代码,当开启保护的时候,提交表单会比对这段代码,从而防范攻击

解决方法
jquery为例
参数name:值


JS复制代码
<?php echo $this->security->get_csrf_token_name();?>  : '<?php echo $this->security->get_csrf_hash(); ?>
复制代码


传递参数同时把csrf的code传过去


本版积分规则