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

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

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

Я прочитал следующее: подготовлены ли PDO заявления, достаточные для предотвращения SQL-инъекций? Но данные там не совсем ясны.

Solutions Collecting From Web of "Как подготовленные заявления PHP PDO предотвращают инъекцию sql? Каковы другие преимущества использования PDO? Использует ли PDO эффективность?"

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

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

Как подготовленные заявления защищают от атак SQL-инъекций?

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

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

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

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

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

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

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

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

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

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

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

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

Уменьшает эффективность использования PDO

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