牛骨文教育服务平台(让学习变的简单)
博文笔记

YII 防止自定义sql注入

创建时间:2014-12-07 投稿人: 浏览次数:2338


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",

));



待续。。。。。。。。。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。