2012-04-16 12 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

+0

攻撃の可能性のある部分を見る前に、LoginFormとおそらくあなたのUserIdentityモデルを投稿する必要があります – acorncom

+0

この人は実際に何かを変更しましたか?あなたを恐れようとしている誰かだけかもしれません。あなたが知っている人なら、彼らが何を言っているのかを明確にするように頼んでください(たとえば、どのページが脆弱だと思いますかなど)。それ以外にも、アクションだけでなくログインコードの多くを見る必要があります。 – Avanche

答えて

2

すべての外部変数をSQL変数にバインドする必要があります.Sql注入の可能性はなくなります。

+0

Yiiは、ActiveRecordのマニュアルをいくつか手作業で行っていない限り、すべてのクエリに対してこれをデフォルトで行います。 – Paystey

関連する問題