XSS

php скрипты

XSS (Cross Site Scripting, "межсайтовый скриптинг", названный XSS, чтобы не было путаницы с CSS, таблицами стилей) представляет собой атаку, при которой злоумышленник публикует на атакуемом сайте скрипт (к примеру, на языке JavaScript), который исполняется у пользователей сайта при открытии ими страниц. Поскольку этот скрипт выполняется в браузере у пользователя, то он имеет доступ к информации в его cookie, а также может производить на сайте действия от имени пользователя (если тот "залогинен"), к примеру, читать, писать и удалять сообщения.

Очевидно, что в основном XSS угрожает сайтам, на которых регистрируются и оставляют информацию его пользователи (форумы, блоги, доски объявлений), но опасность может угрожать и администраторским интерфейсам, если в них есть модули, предназначенные для просмотра данных, поступающих от посетителей сайта. Это могут быть сообщения из форм обратной связи, заказа или отзывов. Это может быть и статистическая информация об адресах, откуда к нам приходили посетители (поле HTTP-запроса "Referer"), и какими браузерами они при этом пользовались (поле "User-Agent").

Основным способом противодействия XSS-атакам является фильтрация пришедших извне и публикуемых на сайте данных. Как правило, достаточно заменять символы "<" и ">" на "&lt;" и "&gt;" соответственно (php-функция htmlspecialchars), при этом введенный посетителем текст теряет HTML-оформление, а содержащиеся в нем скрипты утрачивают вредоносность.

Правда, не все сайты могут пойти на такое радикальное решение, как игнорирование HTML-разметки. Зачастую, все-таки надо предоставить пользователю возможность как-то оформлять свои сообщения: выделять цитаты, менять шрифты, раскрашивать тексты разным цветом, вставлять картинки и таблички, как, к примеру, сделано на LiveJournal. Им приходится разрабатывать и применять алгоритмы частичной очистки HTML.


Источник: http://www.captcha.ru

Рекомендуем



SQL-инъекции Некоторые специалисты советуют применять для этого специальные конструкторы SQL-запросов, которые сами обеспечивают требуемое разделение запроса и данных


XSS и BB-коды Всем этим мы добъемся того, что наш фильтр будет правильно работать и в случае появления поддержки в браузерах каких-то конструкций, которых, возможно, еще и в проекте нет


Register Globals Если программист не следит за начальной инициализацией переменных, может возникнуть уязвимость, иллюстрируемая простым примером: