2012-04-16 50 views
0

最近我收到一封電子郵件,聲稱他可以通過sql注入來更改我的管理員密碼。 這是我的代碼。它是使用Yii php框架開發的。任何人都可以看到缺陷?Yii框架,登錄,SQL注入

public function actionLogin() 
{ 

    $model=new LoginForm; 

    // if it is ajax validation request 
    if(isset($_POST['ajax']) && $_POST['ajax']==='login-form') 
    { 
     echo CActiveForm::validate($model); 
     Yii::app()->end(); 
    } 

    // collect user input data 
    if(isset($_POST['LoginForm'])) 
    { 
     $model->attributes=$_POST['LoginForm']; 
     // validate user input and redirect to the previous page if valid 
     if($model->validate() && $model->login()) 
      $this->redirect(Yii::app()->user->returnUrl); 
    } 
    // display the login form 
    $this->render('login',array('model'=>$model)); 
} 
+3

更改密碼可以通過「忘記密碼」或類似方法完成。 – kirilloid 2012-04-16 03:26:36

+0

在我們看到可能受到攻擊的部分之前,您需要發佈您的LoginForm和可能的UserIdentity模型 – acorncom 2012-04-16 03:57:07

+0

這個人真的改變了什麼嗎?可能只是有人試圖嚇跑你。如果是你認識的人,那麼請他們澄清他們在說什麼(例如,他們認爲哪些頁面易受攻擊等)。除此之外,我們需要查看更多的登錄代碼,而不僅僅是操作。 – Avanche 2012-04-16 14:52:02

回答

2

每天要在其中創建SQL查詢,必須綁定與SQL變量的所有外部變量,它會刪除SQL注入的可能性。

+0

Yii默認爲所有查詢執行此操作,除非他正在執行一些手動ActiveRecord內部處理。 – Paystey 2012-04-18 14:12:27