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

));



待續。。。。。。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章