LINUX.ORG.RU

значит ли это, что <...> инъекция не грозит?

Нет, не значит. $query вполне может формироваться «опасным» способом. Вот если там потом ->bindValue (или родня) используется везде, тогда да.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Ага, спасибо. Там вроде ничего такого нет.

Сам запрос формируется так

$this->db->query_all('select * from members where foo=? and bar=?',array('test','test2'));
А после prepare там вот что ($params это массив, переданный через функцию выше)
    /* prepare the query */
    try {
      $this->result = $this->pdo->prepare($query);
    } catch (PDOException $e) {
        throw new Exception(sprintf("PDO Error: %s Query: %s",$e->getMessage(),$query));
        return false;
    }      
    
    /* execute with params */
    try {
      $this->result->execute($params);  
    } catch (PDOException $e) {
        throw new Exception(sprintf("PDO Error: %s Query: %s",$e->getMessage(),$query));
        return false;
    }    

То есть, вроде всё как по примеру , вопросительные знаки, массив подставляемый по порядку. Это альтернативный подход именованым prepared statements, и здесь, как и там, запрос и параметры подаются отдельно. Получается, отличие состоит в том, что тут не происходит строгой проверки по типу со всякими PDO::PARAM_* поэтому это небезопасно? Но строгая типизация ещё ведь не означает защиты от инъекций, так?

Deleted
()
Ответ на: комментарий от Deleted

Разделение запроса и данных даёт гарантию защиты от инъекций, так как отсекается возможность сделать ошибку с экранированием параметров.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Подытожим: то есть в PDO суть достигается разделением и ничем больше (то есть этого достаточно, разницы между подготовкой через имена и «?» с точки зрения безопасности нет)?

Deleted
()
Ответ на: комментарий от i-rinat

(Достаточно просто да или нет)

Deleted
()
Ответ на: комментарий от Deleted

разницы между подготовкой через имена и «?» с точки зрения безопасности нет?

Разницы с точки зрения безопасности нет.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Спасибо ещё раз, тема закрыта.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.