Достаточно ли использовать подготовленные запросы PDO PHP?

при приеме данных из формы, достаточно ли использовать подготовленные запросы? IDE рекомендует filter_input совмещать с is_*(). Слушаю все мнения)

public static function preExec($sql, $arr, $db) {
        $stmt = $db->prepare($sql);
        $stmt->execute($arr);
    }

    $arr[] = $_REQUEST['data'];
    $sql = 'UPDATE `sometb` SET `someval`=?';
    Class::preExec($sql, $arr, $db);
  • Вопрос задан
  • 765 просмотров
Пригласить эксперта
Ответы на вопрос 4
@asd111
PDO защищает от sql injection. Вам еще понадобится выводить данные пользователям так чтобы не было XSS. Ещё вам нужна будет защита CSRF. И ещё по мелочи.
В общем берите laravel или symfony и не мучайтесь.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
тут у вас в кучу кони и люди...
Препаред стэйтментс защищают запросы от инъекций на уровне драйвера, но кроме этого есть еще логика приложения и типы данных, где эти переменные тоже должны соответствовать какому-то критерию, например если в массиве будет строковая переменная, а в базе поле под нее интежер мы падаем с ошибкой базы, а не обрабатываем на уровне приложения, где можно внятно ее обработать и отдать пользователю четкую ошибку.
Соответственно проверка данных как минимум на типы должна проводиться на уровне приложения.
Ответ написан
Комментировать
@McBernar
Путаете теплое с мягким.
Валидация форм и защита от инъекций — это совершенно разные задачи.

Для защиты достаточно PDO.
Ответ написан
@kuftachev
Вам уже правильно написали, но без разъяснений, что пользовательский ввод нужно валидировать не только на вход, но и на выход.

Например, если человек напишет и это будет отправляться на доступную страницу - это вас неприятно удивит.

И много других приятных сюрпризов может быть.

Также про CSRF, с аккаунта авторизованно где о пользователя атакующий может делать любые действия доступные пользователю.

Мораль, не нужно изобретать велосипед на таком уровне знаний, берите фреймворк и в путь. Это когда Вы уже все знаете и понимаете почему решение из Вашего фреймворка Вас не устраивает, вот тогда нужно делать велосипед.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы