Задать вопрос
@rv9ufz
Кратко о себе

Как проверять входные данные, чтобы нельзя было выполнить произвольный код?

Такой вот теоретический вопрос. Допустим, есть форма ввода с полем типа text, оно передается в скрипт и записывается в переменную, далее эта переменная используется в различных функциях и в различных вариациях.

Посмотрел в разных движках, там в самом начале делается что-то вроде
$post_text = trim($_POST['text']);
$post_text = preg_replace('# +#is', ' ', $post_text);
$post_text = mb_substr($post_text, 0, 5000);
$post_text = htmlspecialchars($post_text, ENT_QUOTES);
$post_text = mysql_real_escape_string($post_text);

Последнее используется перед запросом к бд.

А вот если данные из POST фигурируют только в виде переменной в разных функциях, то на что следует обратить внимание?
  • Вопрос задан
  • 87 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
Все что делается сначала, нужно для вывода, то что в конце для записи в базу. По нормальному, надо чистые данные писать в базу, делая эскейп, и при выводе делать замены для защиты от xss.
Например у нас форум, куча ббкодов или маркдаун, вставки кода, если сразу все применить, то на выходе придётся делать обратно конвертер, чтоб оно работало
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
В ужасе
Выкинуть
Это всё
На помойку

Про "движки", в которых это вычитал - забыть.
Вместо этого освоить какой-нибудь фреймворк с нормалным шаблонизатором.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
На все входные данные - regex-фильтр: свой на каждый тип или переменную!
preg_match()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы