Защищает ли Zend_DB / Doctrine меня от внедрения SQL? - PullRequest
1 голос
/ 31 августа 2010

Защищает ли меня использование подготовленных операторов в Zend_DB или Doctrine от SQL-инъекции?

пример:

$stmt = $db->prepare('SELECT * FROM users WHERE name = ? AND password = ?');
$rs = $stmt->execute('peter', 'secret');

Или я должен сам проверять типы строк и типов?

Еще одна подсказка: какая из двух лучше?Мне нужна только абстракция БД (с инструкциями, процедурами и транзакциями).

1 Ответ

1 голос
/ 31 августа 2010

Да.

Подготовленные операторы, будь то с помощью Zend_Db, Doctrine или простого старого mysqli, защищают вас от внедрения, отделяя структуру запроса от данных.Это означает, что если вы подготовите оператор, который выбирает пользователей на основе их имени и пароля, ни один хакер не сможет предоставить данные, которые превращают этот оператор в другой.

Просто убедитесь, что сам запрос является строковой константой.

Что касается вашего второго вопроса, у Doctrine и Zend_Db разные подходы, подходящие для разных ситуаций и разных эстетических предпочтений.,Здесь уже было несколько вопросов по теме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...