YII 防止自定义sql注入
1://防xss 跨栈注入获取get/post传值
Yii::app()->request->getQuery($key, $default_value, true);//获取get传值
Yii::app()->request->getPost($key, $default_value, true); //获取post传值
Yii::app()->request->getParam($key, $default_value, true); //获取post/get传值
2:
跨站请求伪造(简称CSRF)攻击,即攻击者在用户浏览器在访问恶意网站的时候,让用户的浏览器向一个受信任的网站发起攻击者指定的请求。 Yii实现了一个CSRF防范机制,用来帮助防范基于POST的攻击。默认情况下,CSRF防范是禁用的。如果你要启用它,可以编辑应用配置 中的组件中的CHttpRequest部分。
return array(
"components"=>array(
"request"=>array(
"enableCsrfValidation"=>true,
),
),
);
要显示一个表单,请使用CHtml::form而不要自己写HTML代码。
Yii实现了一个cookie验证机制,可以防止cookie被修改。启用之后可以对cookie的值进行HMAC检查。
return array(
"components"=>array(
"request"=>array(
"enableCookieValidation"=>true,
),
),
);
直接使用AR对象赋值操作数据库的Yii会自动做防注入处理。
不使用AR对象赋值方式,使用直接sql的,也应该使用这种参数赋值的方式,可以防止注入攻击:
$db = Yii::app()->db;
$sql = "select * from table where userid=:userid and date between :date_start and :date_end"
$results = $db->createCommand($sql)->query(array(
":userid" => 115,":date_start"=>"2009-12-1",":date_end"=>"2009-12-31",
));
待续。。。。。。。。。
- 上一篇: base64 加密方式详解
- 下一篇: yii防止sql注入