Re: Скрытая угроза: «неизменяемые» поля Web-форм
От: DOOM Россия  
Дата: 11.01.08 05:32
Оценка:
Здравствуйте, Landgraph, Вы писали:

L>Статья:

L>Скрытая угроза: «неизменяемые» поля Web-форм
Автор(ы): Landgraph
Дата: 11.01.2008
Очень часто при анализе сторонних скриптов обнаруживается одна и та же распространенная ошибка: отсутствие проверки передаваемых данных в «неизменяемых» полях, таких как <input type=”hidden”>, <input type=”radio”>, <input type=”checkbox”> и, конечно же, <select></select>.
Почему-то начинающие и более опытные программисты, считают, что «неизменяемые» явно поля – никак нельзя отредактировать. Поверьте, это далеко не так!


L>Авторы:

L> Landgraph

L>Аннотация:

L>Очень часто при анализе сторонних скриптов обнаруживается одна и та же распространенная ошибка: отсутствие проверки передаваемых данных в «неизменяемых» полях, таких как <input type=”hidden”>, <input type=”radio”>, <input type=”checkbox”> и, конечно же, <select></select>.
L>Почему-то начинающие и более опытные программисты, считают, что «неизменяемые» явно поля – никак нельзя отредактировать. Поверьте, это далеко не так!


Вообще тема интересная и требующая большего раскрытия. Безопасность Web-приложений очень актуальная тема в настоящее время, а подмена параметров пользователей является самым распространенным путем внедрения зловредного кода на сервер. Причем параметры пользователя это не только тело запроса — есть еще Cookie и заголовки HTTP. Причем чаще всего программисты забывают именно про заголовки HTTP.

Например, система борьбы с накрутками в голосованиях — временно запоминает информацию о пользователе (в базу данных), в том числе его браузер (заголовок User-Agent), при этом никто не фильтрует строку — проблема, думаю, понятна.

Еще достаточно важная тема это фильтрация vs экранирование. Например, многие PHP разработчики полюбили опцию magic_quotes_gpc (кстати, она уже deprecated) и считают, что это защитит их от всех проблем (например, при вставке в таблицу строковых значений у злоумышленника не будет возможности завершить строку раньше времени). Однако это не всегда помогает, особенно, если это единственный способ экранирования данных при вызове команды оболочки. Опять простой пример: допустим вызывается команда оболочки echo "$_POST['data']" и при этом активна опция magic_quotes — казалось бы строку не закрыть? А зачем ее закрывать? magic_quotes не экранирует бэк тики (`), поэтому достаточно передать `rm -rf /var/www` в качестве data.

Ну и так далее. Я бы всем web разработчикам настоятельно рекомендовал ознакомление с моделью SDL (Security development lifecycle) от MS, моделями STRIDE и DREAD и т.п. Ну и очень полезные материалы можно найти на сайтах
www.webappsec.org и www.owasp.org.

P.S. приведенные примеры ошибок в этом сообщение мною встречались в реальной жизни, так что это не просто пространные рассуждения.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.