yii2X版本的请绕行,这里说的是yii 1.1.14版本。某某公司的老程序当中没有考虑csrf攻击,所以不幸中枪了。(具体地址我就不贴了,说下解决方案)
配置文件当中检查是否已开启csrf
components配置中没看到
‘request’=>array( ‘enableCsrfValidation’ => true, )
的配置。如果全局开启会影响到其他ajax请求
可以在控制器当中这样写
Yii::app()->request->enableCsrfValidation = true;//开启csrf
Yii::app()->request->csrfTokenName = 'FORM_TOKEN';//表单名称
//以上两句的影响是 $form = $this->beginWidget('CActiveForm')的时候
//会生成一个隐藏的input名字是FORM_TOEKN(值就是csrftoken)
if($_POST) {
try {
Yii::app()->request->validateCsrfToken(null);
} catch (Exception $e) {
die('The token could not be verified.');
}
}
资料参考: http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html http://www.crarun.com/article-7.html