Есть ли какие-либо преимущества безопасности при использовании PDO :: query против mysql_query? - PullRequest
3 голосов
/ 15 августа 2011

Я пытаюсь реорганизовать некоторый унаследованный код PHP, и я знаю, что PDO более безопасен с добавлением подготовленных операторов и тому подобного, но мне интересно, есть ли какие-либо преимущества безопасности при использовании метода PDO::query() по сравнению с метод mysql_query(). Есть ли?

Ответы [ 3 ]

6 голосов
/ 15 августа 2011

Если не считать ошибки в PDO или mysql_ *, проблемы безопасности с запросами к базе данных зависят от выполняемого запроса, а не от того, что используется для подключения к базе данных.

Если вы создаете небезопасный запрос с пользовательскими данными и выполняете его с PDO::query(), он так же небезопасен, как и с mysql_query(). Точно так же, если у вас есть безопасный запрос, его выполнение с PDO::query() практически не отличается от mysql_query().

1 голос
/ 15 августа 2011

Нет, но если бы вы использовали подготовленную PDO-статистику вместо PDO: query (), вы бы тогда были довольно невосприимчивы к инъекционным атакам, так как они будут избегать переменных для вас.

У PDO есть и другие преимущества по сравнению с функциями mysql ...

prepared statements
transactions
ability to switch drivers
can get result rows as objects
etc
0 голосов
/ 15 августа 2011

Вы можете объединить строку в предварительно подготовленном операторе PDO из пользовательского ввода, поэтому она не является более безопасной в любом случае. Предварительно подготовленные отчеты имеют также некоторые недостатки. Например, вы не можете создать простой запрос, в котором U использует переменное количество данных, например:

WHERE id IN (1,2,5,7,9,23)

Если вы знаете, что будете использовать только MySQL, я предлагаю вам использовать mysqli, а не PDO. Нет необходимости в ненужном уровне абстракции.

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