Yii CDbCriteria中的“订单”属性是否安全?

Yii CDbCriteria中的“订单”属性是否安全?,yii,Yii,以下代码对SQL注入是否安全 $criteria = new CDbCriteria(); $arySort= json_decode($_GET['sort']); $criteria->order= $arySort[0]->property . ' ' . $arySort[0]->direction; Person::model()->findAll($criteria); 如果没有,我应该如何确保CDbCriteria对象的order属性没有危险 我应该使

以下代码对SQL注入是否安全

$criteria = new CDbCriteria();
$arySort= json_decode($_GET['sort']);
$criteria->order= $arySort[0]->property . ' ' .  $arySort[0]->direction;

Person::model()->findAll($criteria);
如果没有,我应该如何确保CDbCriteria对象的order属性没有危险


我应该使用吗?

我认为不仅仅考虑sql注入是不够的。您必须检查json数组中的数据,因为可能会发送错误的字段名或方向

所以

PS

在使用CGridView的情况下

public function search()
{
    $criteria=new CDbCriteria;

    $criteria->compare('t.id',$this->id);
    $criteria->compare('t.title',$this->title,true);
    $criteria->compare('content',$this->content,true);
    $criteria->compare('url',$this->url,true);

    return new CActiveDataProvider(
        $this,
        array(
            'criteria'=>$criteria,
            'sort'=>array(
                'defaultOrder'=>'title ASC',
                'attributes'=>array(
                    '*'
                )
            ),
            'pagination'=>array(
                'pageSize'=>20,
            ),
        )
    );
}

您使用CGridView来呈现数据吗?不,我使用的是ExtJs。然而,我不认为CGridView能起到什么作用。
public function search()
{
    $criteria=new CDbCriteria;

    $criteria->compare('t.id',$this->id);
    $criteria->compare('t.title',$this->title,true);
    $criteria->compare('content',$this->content,true);
    $criteria->compare('url',$this->url,true);

    return new CActiveDataProvider(
        $this,
        array(
            'criteria'=>$criteria,
            'sort'=>array(
                'defaultOrder'=>'title ASC',
                'attributes'=>array(
                    '*'
                )
            ),
            'pagination'=>array(
                'pageSize'=>20,
            ),
        )
    );
}