Как правильно экранировать данные?
Доброе утро, сообщество! А как вы экранируете данные, которые от пользователя идут в базу? Я честно до последнего момента был уверен что PDO prepare() делает всю работу по экранированию, и засунуть в нее инъекцию не реально. Но один мой товарищ тихо мирно обычной инъекцией очистил мне табличку в базе, доказав что prepare() нифига не экранирует.
Есть масса способов, таких как addslashes, но было бы интересно послушать от вас. Вдруг все уже за меня придумано…
Есть масса способов, таких как addslashes, но было бы интересно послушать от вас. Вдруг все уже за меня придумано…
Комментарии: 5
Вдруг все уже за меня придумано…На хабре есть подробные статьи.
В MODX есть
— modx::escape(),
— modx::quote(),
— modx::stripTags,
— ну и напоследок убойный modx::sanitizeString.
А ежели сам пишешь PDO запрос, то используй bindParam.
а можно пример запроса с инъекцией?
Мне, почему-то, кажется, что автор неверно использовал PDO::prepare() без плейсхолдеров, а просто вручную составлял запрос, который потом засунул в эту функцию. Так, конечно, ничего не будет экранировано.
Вот правильный способ. Обратите внимание на
Вот правильный способ. Обратите внимание на
$this->xpdo->prepare($sql)->execute(array_values($record));
я подумал об этом же, кстати на стэке расписано более подробно об инъекции и о том что же является ее причиной в случае работы с PDO:
stackoverflow.com/questions/134099/are-pdo-prepared-statements-sufficient-to-prevent-sql-injection
stackoverflow.com/questions/134099/are-pdo-prepared-statements-sufficient-to-prevent-sql-injection
Может не совсем к месту вопрос, но всё равно задам
Есть вывод ресурсов
city:=":«Санкт–Петербург
в Санкт-Петербург приходится использовать тире, если ставить там „-“ (минус)
ничего не работает
как научить where корректно обрабатывать знак минус?
заэкранировать его както или что?
Есть вывод ресурсов
[[pdoResources?
&parents=`[[++locations_plans]]`
&tpl=`@INLINE <a href="[[+alias]]">[[+menutitle]]</a>`
&tvPrefix=``
&where=`{"city:=":"Санкт–Петербург","template:=":3}`
&includeTVs=`city`
]]
так вот гдеcity:=":«Санкт–Петербург
в Санкт-Петербург приходится использовать тире, если ставить там „-“ (минус)
ничего не работает
как научить where корректно обрабатывать знак минус?
заэкранировать его както или что?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.