Intereting Posts
TCPDF HTML со специальными символами отображает пустой файл PDF Соглашение об именах: единственное число против множественного числа для классов, описывающих объекты в PHP Поиск массива JSON для значений и доступа к окружающим клавишам / значениям; выход как JSON как получить иерархическое меню из mysql Как установить флаги при использовании функции phpseclib ssh2 exec ()? Как автоматически выйти из системы при закрытии браузера? Как перечислить все имя класса контроллера в codeigniter? Nginx 405 не разрешен для конкретного файла .php'-файла PHP – сериализация класса со статическими свойствами Удалить дубликаты ключей из многомерного массива Symfony2 передает значения в тип коллекции Сервер C2DM с ошибкой PHP 401 Поиск модели yii с daterange для метки времени ошибка при загрузке изображения нет такого пути или каталога Вставка целого числа и datetime из PHP в MySQL 5.0 db error

Выполнение PDO ($ input_parameter) защищает от SQL-инъекций как bindParam / bindValue?

Выполняет ли execute($input_parameter) защиту от SQL-инъекций, как bindParam/bindValue ?

Если ответ да, bindParam()/bindValue()/execute() неуязвимы для любой атаки sql-inject? Или мне нужно принять меры для предотвращения таких атак ?.

Спасибо за помощь!.

Поскольку execute($input_parameters) является таким же безопасным, как отдельные bindParam/bindValue/execute , ответ будет казаться в основном, да.

Тем не менее, вам все равно придется принимать дополнительные меры в зависимости от того, как вы построили строку запроса, которую вы передаете в ваш вызов PDO::prepare . Не всегда возможно параметризовать все в подготовленной строке запроса. Например, вы не можете использовать параметр для имени таблицы или столбца. Если вы разрешаете данные пользователя или любые внешние данные в этой строке запроса, вы все равно должны дезинфицировать эти данные перед передачей строки для prepare . Дополнительные сведения см. В этих вопросах stackoverflow:

  • насколько безопасны подготовленные заявления PDO
  • Являются ли подготовленные PDO заявления достаточными для предотвращения SQL-инъекций?

В общем, вы должны фильтровать все входные данные в любом случае, поэтому, если вы хотите быть более безопасным, вы можете дезинфицировать любые входные данные, предназначенные для материалов типа SQL, используя фильтры, соответствующие вашим потребностям, или даже написать специальную функцию FILTER_CALLBACK, если вы пожелает. В случае имен таблиц или столбцов, исходящих из предоставленных пользователем данных, общая методика проверки – это проверка значений по массивам допустимых имен.

Надеюсь это поможет. Удачи. Будьте в безопасности! 😉

Да, он делает то же самое. Я не могу сказать, что он неуязвим, потому что базовый механизм SQL сам по себе может быть уязвим. Но это действительно не в твоих руках.

По всем практическим причинам, да, это безопасно.

EDIT: посмотрите на документацию PHP (1-й и 2-й примеры). Один из них bindParam() с bindParam() а другой использует execute() .