Yii Framework Forum: Active Record - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Active Record Active Record и sql injection Rate Topic: -----

#1 User is offline   Daniel-n 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 17-June 13

Posted 18 September 2013 - 01:33 PM

скажите пожалуйста, защищает ли AR в Yii от sql injection? просто нигде не нашел ответ на этот вопрос.
Скажем, безопасна ли конструкция вида
public function actionView($id, $path)
        {
            $category = Tree::model()->findByPath($path);//вот это, ищем, получив данные из $_get
            $post = Post::model()->with('category')->with('comments')->findByPk($id); //может стоит хотя-бы 
//сделать $id=int($id)?
            //..

          }


0

#2 User is offline   ORey 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,696
  • Joined: 20-April 09
  • Location:Moscow, Russia

Posted 18 September 2013 - 01:35 PM

да.
God is real unless declared as integer
0

#3 User is offline   samdark 

  • Having fun
  • Yii
  • Group: Yii Dev Team
  • Posts: 3,724
  • Joined: 17-January 09
  • Location:Russia

Posted 18 September 2013 - 01:37 PM

Смотря как реализован findByPath.
Yii 1.1 Application Development Cookbook

Enjoying Yii? Star us at github: 1.1 and 2.0.
0

#4 User is offline   Daniel-n 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 17-June 13

Posted 19 September 2013 - 03:00 AM

Ок. Вот реализация findbyPath
public function findByPath($path)
    {
        $domens = explode('/', trim($path, '/'));
        $model = null;

        $criteria = $this->getOwnerCriteria();

        if (count($domens)==1) {
            $criteria->mergeWith(array(
                'condition'=>'t.' . $this->aliasAttribute . '=:alias AND t.' . $this->parentAttribute . '=0',
                'params'=>array(':alias'=>$domens[0])
            ));
            $model = $this->cached($this->getOwner())->find($criteria);
			

        } else {

            $criteria->mergeWith(array(
                'condition'=>'t.' .$this->aliasAttribute . '=:alias',
                'params'=>array(':alias'=>$domens[0])
            ));
            $parent = $this->cached($this->getOwner())->find($criteria);

            if ($parent){
                $domens = array_slice($domens, 1);
                foreach ($domens as $alias){
                    $model = $parent->getChildByAlias($alias, $this->getOriginalCriteria());
                    if (!$model) return null;
                    $parent = $model;
                }
            }
        }
        return $model;
    }

0

#5 User is offline   samdark 

  • Having fun
  • Yii
  • Group: Yii Dev Team
  • Posts: 3,724
  • Joined: 17-January 09
  • Location:Russia

Posted 19 September 2013 - 09:57 AM

Тут инъекция теоретически возможна, если вдруг aliasAttribute или parentAttribute могут прилететь от пользователя.
Yii 1.1 Application Development Cookbook

Enjoying Yii? Star us at github: 1.1 and 2.0.
0

#6 User is offline   Daniel-n 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 17-June 13

Posted 18 December 2013 - 02:49 AM

View Postsamdark, on 19 September 2013 - 09:57 AM, said:

Тут инъекция теоретически возможна, если вдруг aliasAttribute или parentAttribute могут прилететь от пользователя.

ок, то есть получается, что метод mergeWith ничего не экранирует?
0

#7 User is offline   Mihail 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 109
  • Joined: 29-June 13

Posted 18 December 2013 - 01:27 PM

View PostDaniel-n, on 18 December 2013 - 02:49 AM, said:

ок, то есть получается, что метод mergeWith ничего не экранирует?


экранирует только не поля а значение но если создать мегакод который по каким то причинам будет из гета или поста передавать значение в $this->aliasAttribute или в $this->parentAttribute то инъекция возможна так как эти параметры по идее должны задаваться статично
Быстро ссылки:
Yii - http://www.yiiframework.com/download/
Полное руководство по Yii - http://www.yiiframew...de/1.1/ru/index
Class Reference - http://www.yiiframework.com/doc/api/
Расширения - http://www.yiiframew...com/extensions/
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users