1. Приветствую гостей и пользователей нашего форума! Первый раз вы у нас или же давно участвуете в жизни ресурса, хочу напомнить несколько моментов.

    1) Пользуемся поиском по форуму! Зачастую информация может находиться не по разделу!

    2) Раздел ИНФО-продуктов относительно новый, но имеем уже более 3000 высококлассных материалов (пользуемся сортировкой по прификсам).

    3) И самое важное, КАК КАЧАТЬ БЕЗ ОГРАНИЧЕНИЙ, вся информация находится по этой ссылке КУПИТЬ VIP

    4) Временная акция, получи +5 постов за вступление в нашу группу "Вконтакте" Более подробно ТУТ

    5) Веди активную жизнь на форуме и получай рубли на личный счёт!

    Скрыть объявление
  2. На нашем форуме Null-Prog действует серьёзное правило касательно размещения материалов!

    ДЛЯ РЕЛИЗЁРОВ: категорически запрещается выкладка материалов на файлообменники типа Deposit, letitbit и другие, требующие просмотров рекламы, обрезающие скорость и тд. Нарушителям, первые 2 раза предупреждения, далее БАН. Тему по этому поводу можно посмотреть ТУТ

    Скрыть объявление
  3. В тестовом режиме на нашем форуме открыт онлайн конструктор сайтов. Вы можете попробовать создать свой сайт у НАС, интуитивно понятный интерфейс, переведёт на 95%, быстрый экспорт проекта, от вас только перетаскивать элементы и вставить в них необходимый текст!

    Все вопросы ТУТ

    Скрыть объявление

  4. Скрыть объявление
  5. Уважаемые форумчане, открывается новый раздел форума, посвящённый ремонту и эксплуатации автомобилей. Просмотреть его можно ТУТ

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

    Напоминаю, сообщения в разделе АВТО не учитываются, общение не ограничено.

    Скрыть объявление
  6. Объявляется набор Модераторов на различные раздел форума, свои заявки можно оставлять в ЭТОМ разделе, перед оставлением заявки рекомендуется ознакомиться с ПРАВИЛАМИ для модераторов.

XSS

Тема в разделе "Защита и взлом", создана пользователем Sam Jack, 18 май 2015.

  1. Sam Jack

    Sam Jack Капитан-Узурпатор
    Команда форума Созидатель

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

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

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

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

    XSS и BB-коды
    Одним из путей являются так называемые BB-коды (Bulletin Board), альтернативные теги, обычно записываемые в квадратных скобках, которые движок сайта потом при отображении заменяет на HTML-аналоги. Набор этих псевдотегов обычно очень ограничен, иногда они даже не могут иметь атрибутов. Либо набор атрибутов также сильно ограничен. Вообще, можно реализовать различные языки разметки, главное, чтобы они четко контролировались разработчиком.

    Таким образом, положительным моментом BB-кодов является то, что их гораздо легче контролировать, чем HTML (который, к тому же, в разных браузерах может поддерживать разные недокументированные конструкции). Потом, один BB-код может заменяться на целую группу HTML-тегов, оформляя цитату, вставляя ссылку на картинку с предпросмотром ее данных (размера) и т. д. Недостатками BB-кодов является то, что это отдельный язык, который надо изучать пользователям сайта, который может по-разному быть реализован на разных сайтах. Ну и уже готовые HTML-тексты перед публикацией придется переводить с HTML на BB.

    Но и BB-ориентированные системы могут быть подвержены XSS-атакам, если при их проектировании сделано отступление от идеи написания языка разметки с нуля. Приведу пример: пусть мы тегом оформляем жирный текст. И при этом разрешаем пользователям с помощью атрибута color менять его цвет. То есть пусть [b color="red"]... заменяется на <b style="color:red">...</b>. На первый взгляд все хорошо, однако...[/B]

    Злоумышленник может в значение атрибута color записать что-то посложнее простого цвета, к примеру, он туда запишет строку «red" onmouseover="скрипт» или «expression(скрипт)». И, если мы не осуществляем должной фильтрации значения цвета, мы получим скрипт, выполняющийся у посетителей.

    Хорошей идеей для такой фильтрации будет не вычищать потенциально опасные вещи (к примеру, слово expression или кавычки), а наоборот, пропускать только такие данные, которые являются корректными. В случае с цветом это последовательность латинских букв и цифр, возможно, с символом «#» в начале (т. е., к примеру, регулярное выражение «^[#]?[a-zA-Z0-9]+$». Есть, конечно, в стандарте HTML и другие форматы записи цветов, желающие могут справиться в интернете). Можно пойти дальше, отсеивать, к примеру, цвета, равные или близкие к цвету фона и т. д. Всем этим мы добъемся того, что наш фильтр будет правильно работать и в случае появления поддержки в браузерах каких-то конструкций, которых, возможно, еще и в проекте нет.

    XSS и HTML
    Бывает, что сайт не может пойти на полный запрет использования HTML-верстки в пользовательских сообщениях. В основном это публичные блоги и "социальные сети". Огромное количество пользователей самых разных уровней опытности владения компьютером, самые разные нужды при оформлении публикуемых материалов. Можно сделать достаточно полный язык разметки, но нереально заставить пользователей ему научиться.

    Единственный оставшийся путь — разрешать HTML, но фильтровать в нем все конструкции, подозрительные с точки зрения XSS-уязвимости.

    Такая фильтрация довольно сложна, ее сложность усугубляется тем, что браузеры допускают значительные вольности при написании HTML-разметки, стилей и скриптов, могут прощать отсутствующие или незакрытые кавычки, кодированные различными алгоритмами символы, лишние пробельные символы и пр. В качестве иллюстрации рекомендую ознакомиться с памяткой по различным способам XSS-атак на сайте ha.ckers.org.

    Поэтому чистить HTML от вредоносных конструкций следует в несколько этапов, и первый их них — исправление ошибок синтаксиса. Для этого можно воспользоваться, к примеру, валидатором Tidy. Он расставит отсутствующие кавычки, "проэскейпит" содержащиеся в атрибутах спецсимволы вроде угловых скобок, закроет назакрытые теги, перенесет в секцию <head> (которую мы просто отрежем) все, что не имеет права находиться в <body> и т. д.

    Далее уже следует вычищать комментарии, запрещенные теги, атрибуты и стили.

    Кроме чисто скриптовых конструкций стоит запретить абсолютное позиционирование в стилях, чтобы не было возможности наложить поддельные кнопки и формы поверх настоящих.

    Полная же задача определения потенциальной зловредности того или иного текста, как уже упоминалась, довольно громоздка, возможно, я опишу ее отдельной статьей или скриптом. Отдельно упомяну, что XSS-атаку можно провести через вставленный Flash-ролик, для запрета роликам вызывать JavaScript-команды используйте атрибутAllowScriptAccess тега <embed>:

    <embed AllowScriptAccess='never' ... type="application/x-shockwave-flash"></embed>
    Проследить за тем, чтобы не использовались иные type, тоже полезно.

    Встретил упоминание о XSS через PNG с дописанным в конец текстом в MSIE. Будем надеяться, что оно пропатчено.

    XSS и UTF-7
    Отдельно стоит упомянуть использование для XSS-атаки скриптов, написанных в кодировке UTF-7. Эта кодировка замечательна тем, что угловые скобки в ней записываются как «+ADw-» и «+AD4-» и, стало быть, пропускаются функцией htmlspecialchars нетронутыми. Если браузер пользователя настроен на автоопределение кодировки, а ни в заголовках, ни на странице в теге <meta> до любого контента не прописано кодировки, браузер, встретив в контенте характерные для UTF-7-кодировки символы, переключится в эту кодировку и выполнит код.

    Например, у нас на форуме название темы идет в тег <title>, секция <head> документов начинается таким образом:

    <title>MegaForum - название темы</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    Кодировка прописана, но, к сожалению, уже после вывода поступившего от посетителя названия в <title>. И если он, к примеру, назовет тему

    +ADw-/title+AD4APA-script+AD4-скрипт+ADsAPA-/script+AD4-
    то в результате браузер прочитает и проинтерпретирует код

    <title>MegaForum - </title><script>скрипт</script>
    Последствия, думаю, очевидны. А вся проблема из-за того, что <meta> с указанием кодировки не стояла перед <title>. И не было указания кодировки в HTTP-залоговке Content-Type.
     
    Метки:
  2. Quazar71

    Quazar71 Новичок

    Регистрация:
    13 дек 2016
    Сообщения:
    7
    Симпатии:
    1
    Если не хотите особо заморачиваться - прогой acunetix xss scanner прогоните, да и все. Покажет дырки.
     
  3. grafvadim

    grafvadim Новичок

    Регистрация:
    27 июл 2016
    Сообщения:
    20
    Симпатии:
    1
    не совсем так. там все не так просто.
     

Поделиться этой страницей

iHax Community
Рейтинг@Mail.ru Яндекс.Метрика мониторинг сайтов
Форум программного обеспечения/
Загрузка...