Как подготовленные PHP PDO заявления предотвращают внедрение SQL? Каковы другие преимущества использования PDO? Использует ли PDO эффективность?

Я заметил предложение PHP PDO prepared statements prevents SQL injection.

  • Как php PDO (подготовленные протоколы PDO) предотвращают инъекцию sql?
  • Каковы другие плюсы и минусы использования PDO (подготовленные PDO заявления)?
  • Использует ли PDO (подготовленные PDO заявления) эффективность?

Я читал это: Являются ли подготовленные PDO заявления достаточными для предотвращения внедрения SQL? Но данные там не совсем понятны.

Ответ 1

Хорошо, на первый взгляд ваш вопрос выглядит более сложным, если на него будет отвечать только одна ссылка

Как подготовленные заявления php pdo предотвращают использование SQL-инъекции?

Как подготовленные операторы могут защитить от атак SQL-инъекций?

Каковы другие плюсы и минусы использования PDO?

Самый интересный вопрос.
Наибольший недостаток PDO заключается в том, что он продается и размножается серебряная пуля, другой кумир для поклонения.
Хотя он не понимает, что это не принесет никакой пользы, как и любой другой инструмент.
PDO имеет некоторые ключевые функции, такие как

  • Абстракция базы данных. Это миф, поскольку он не меняет сам синтаксис SQL. И вы просто не можете использовать mysql autoincremented ids с Postgre. Не говоря уже о том, что переключения драйверов баз данных не являются частыми решениями разработчиков.
  • Поддержка подписчиков, реализация собственных подготовленных инструкций или их эмуляция. Хороший подход, но очень ограниченный. Отсутствуют необходимые типы заполнителей, такие как идентификатор или местозаполнитель SET.
  • вспомогательный метод для получения всех записей в массиве без написания цикла. Только один. Когда вам нужно как минимум 4, чтобы сделать вашу работу разумной и менее скучной.

Использует ли PDO эффективность снижения?

Опять же, это не PDO, а подготовленные инструкции, которые снижают эффективность. Это зависит от латентности сети между сервером db и вашим приложением, но вы можете считать его незначительным для самых реальных случаев.

Ответ 2

  • Основной метод PDO, используемый для предотвращения внедрения SQL, заключается в подготовке операторов с параметрами в запросе и предоставлении значений при выполнении запроса. PDO автоматически позаботится об ускорении кавычек и других символов в значениях. Пока вы делаете это в каждом запросе и не ставите значения непосредственно в запрос, вы защищены от SQL-инъекции. Ответы в вопросе, который вы связали, показывают, как это делается.

  • Одним из основных преимуществ использования PDO или любого администратора базы данных является то, что PDO инкапсулирует низкоуровневую связь к фактическому БД, оставляя вас иметь дело только с реальной логикой запроса. Он позволяет с минимальными усилиями изменять используемую вами базу данных (MySQL, Postgre и т.д.). Это также упрощает работу с установками master/slave и считывает реплики.

  • В большинстве случаев использование PDO будет только незначительно медленнее, чем прямые вызовы функций. В любом случае, небольшое снижение производительности стоит того.

Ответ 3

Как подготовленные команды php pdo предотвращают инъекцию sql

Вместо того, чтобы раздражать вопрос об этом вопросе, я дам вам ответ на реальный вопрос: prepare запрос по существу выполняет mysql_real_esape_string или некоторый эквивалент на каждом токене (представленный вопросительным знаком или :value). Это упрощает проверку того, что все переменные данные правильно экранированы. Это не предотвращает всех проблем безопасности (например, % и _), что может повлиять на предложения LIKE).

Каковы другие плюсы и минусы использования PDO?

Насколько я знаю, нет никаких средств для использования PDO. Я полагаю, что con - это то, что он не поддерживает все известные БД. Существуют ограниченные драйверы, но это только конфликт, если вы хотите использовать PDO для базы данных, которую он не может поддерживать. Плюсы? Ну, вы получаете большую гибкость из PDO, особенно если вы создаете для него оболочку (на всякий случай вам нужно было переключать DBA), и поскольку он скомпилировал C, он предположительно быстрее, чем другие функции php (см. Ниже). Это также избавляет вас от необходимости писать собственные методы для подготовки запросов и т.д.

Использует ли PDO эффективность снижения

Уменьшить эффективность по сравнению с чем? Какая эффективность? Эффективность программирования или скорость выполнения? Насколько я понимаю, PDO скомпилирован, поэтому его использование должно быть быстрее, чем создание собственной оболочки DB для подготовки запросов и т.д. Если это действительно вызывает беспокойство, вы можете сравнить эту разницу, но я предлагаю вам сначала искать в других местах для замедления.