2015-10-11 2 views
2

Мне интересно, безопасна ли функция persist() из Doctrine для предотвращения внедрения SQL. Я искал, но, прочитав какое-то время, мне все еще не ясно. Я использую Symfony 2:Является ли Доктрина устойчивой() безопасной от SQL-инъекции?

$em = $this->getDoctrine()->getManager(); 
$em->persist($log); 
$em->flush(); 
+0

Я был бы очень обеспокоен, если бы одна из самых популярных библиотек ORM в PHP не защищала от SQL-инъекции. Всегда хорошо знать! – Seer

ответ

3

Вы можете найти ответ на свой вопрос в доктрине 2 документации - here

Вы можете рассмотреть следующий API, чтобы быть в безопасности от SQL инъекции ... Все значения на объектах, вставленных и обновленных через Doctrine\ORM\EntityManager#persist()

Так что да, persist должен быть безопасным от SQL-инъекции.

+1

Большое спасибо за вашу помощь! –

+0

Ну, вы могли бы упомянуть, что Доктрина обернута вокруг «PDO» и использует подготовленные утверждения, которые **, что ** делает Doctrine безопасной от инъекций. Во всяком случае, есть места, где можно потенциально открыть инъекции (т. Е. Если вы напишете DQL, который включает в себя переменную php, такую ​​как 'SELECT My \ Entity u WHERE u.name = $ username') – tftd

1

Да, ORM сгенерирует SQL и запрограммирует запрос автоматически.

Смежные вопросы