Как предотвратить атаки с использованием межсайтовых сценариев

Прочитано: 98 раз(а)


Уязвимости межсайтового скриптинга (XSS) слишком распространены на веб-сайтах и ​​в веб-приложениях, что дает хакерам массу возможностей для запуска XSS-атак и кражи пользовательских данных путем внедрения деструктивных скриптов на онлайн-страницы.

Здесь мы рассмотрим, как работают XSS-атаки; важные шаги по кодированию, предотвращению и обеспечению безопасности; а также ряд продуктов для обеспечения безопасности приложений, которые могут помочь облегчить работу по предотвращению XSS.

Как работает межсайтовый скриптинг (XSS)?

Атаки с использованием межсайтовых сценариев происходят, когда хакеры используют небезопасные методы проверки и кодирования веб-приложений для внедрения вредоносных сценариев в браузер жертвы, что потенциально может привести к захвату учетной записи, перенаправлению на вредоносный веб-сайт или другим вредоносным действиям. Если веб-сайт уязвим для XSS-атак, ввод пользователя будет выполняться как код.

Вот как злоумышленник создает, а затем внедряет вредоносный код на уязвимый веб-сайт:

  1. Создание вредоносного кода. После обнаружения уязвимого веб-сайта с помощью сканирования уязвимостей , перечисления поддоменов и других методов злоумышленник создает вредоносный код, обычно на языке JavaScript, чтобы воспользоваться недостатками целевого веб-сайта.
  2. Внедрение кода: после подготовки вредоносного кода злоумышленник внедряет его на уязвимый веб-сайт, изменяя исполняемый скрипт вредоносным кодом.
  3. Инициирование атаки: когда человек посещает взломанный веб-сайт, вредоносный код автоматически запускается в браузере этого пользователя.
  4. Кража файлов cookie. При запуске вредоносного кода он может украсть токены , файлы cookie и другие конфиденциальные данные пользователя.
  5. Незаконный доступ: вооружившись украденными данными, злоумышленник получает доступ к сеансу или учетной записи пользователя без авторизации.

Как предотвратить атаки с использованием межсайтовых сценариев

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

Проверка Переменных

Проверка переменных — это метод определения того, удовлетворяет ли входные данные желаемым критериям. Сделав это, вы можете снизить вероятность того, что вредоносная информация нанесет ущерб вашему приложению, гарантируя, что через него проходят только безопасные и правильно структурированные данные.

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

Пример PHP:

//Этот код предполагает, что мы получаем ввод адреса электронной почты
$userEmail = $_POST['электронная почта'];

// Проверяем электронное письмо с помощью фильтра, чтобы убедиться, что оно имеет правильный формат.
если (filter_var($userEmail, FILTER_VALIDATE_EMAIL)) {
    // Электронная почта действительна, продолжайте дальнейшую обработку
    // ...
} еще {
    // Неверный формат электронной почты, обработайте ошибку соответствующим образом
    // ...
}

Выходное Кодирование

Еще один способ защиты от XSS-атак — кодирование вывода. Когда вы отображаете на своем веб-сайте динамический контент (например, комментарии или сообщения пользователей), вам необходимо правильно его закодировать, прежде чем отображать в HTML. Кодирование означает преобразование специальных символов в безобидные эквиваленты, чтобы браузер не интерпретировал их как код.

Кодирование гарантирует, что теги сценариев в материалах пользователя отображаются как обычный текст, а не выполняются как сценарии. OWASP предлагает « шпаргалку », которая поможет разработчикам безопасно кодировать; ниже мы позаимствовали несколько примеров кодирования.

Кодирование вывода для контекстов HTML

Вставка переменной между двумя базовыми тегами HTML, такими как:

<div> $varUnsafe </div>

может позволить изменить данные, отображаемые как «$varUnsafe», для добавления атаки на веб-страницу. OWASP рекомендует кодировать сущности HTML для переменной при ее добавлении в веб-шаблон, используя « безопасные приемники », такие как textContent, для размещения переменных.

Кодировка вывода для контекста атрибута HTML

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

Пример:

<div attr="$varUnsafe">
<div attr="*x" onblur="alert(1)*"> // Пример атаки

Кавычки (” и ‘) трудно изменить там, где работает переменная, и это помогает предотвратить XSS-атаки. При использовании JavaScript .setAttribute и [attribute] автоматически кодируют атрибуты HTML и будут защищены безопасными атрибутами HTML .

Кодировка вывода для контекста JavaScript

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

Пример «цитируемых значений данных»:

<script>alert('$varUnsafe')</script>
<script>x='$varUnsafe'</script>
<div onmouseover="'$varUnsafe'"</div>

Символы должны быть закодированы в формате \xHH. OWASP предлагает кодировщик Java в помощь разработчикам. Для JSON заголовок Content-Type должен быть application/json, а не text/html.

Другие опасности кодирования вывода

Переменные, помещенные во встроенный CSS, должны быть помещены в значение свойства CSS. Таким образом, пользователи могут легко изменить внешний вид своих веб-страниц, не ставя под угрозу безопасность.

URL-адреса должны быть закодированы, после чего следует кодирование атрибутов HTML, а при использовании JavaScript для создания значения запроса URL-адреса используйте window.encodeURIComponent(x).

OWASP также отмечает ряд «опасных контекстов», которые небезопасны даже при кодировании вывода, в том числе:

  • <script>Непосредственно в скрипте</script>
  • <!– Внутри комментария HTML –>
  • <style>Непосредственно в CSS</style>
  • <div ToDefineAnAttribute=тест />
  • <ToDefineATAg href=»/test» />
  • Функции обратного вызова
  • URL-адреса обрабатываются в коде
  • Обработчики событий JavaScript (onclick(), onerror(), onmouseover()).
  • Небезопасные функции JS, такие как eval(), setInterval(), setTimeout().

HTML-Дезинфекция

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

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

Использование надежных и хорошо поддерживаемых библиотек для очистки HTML в онлайн-приложениях имеет решающее значение, и OWASP предлагает DOMPurify в качестве полезного инструмента в борьбе с XSS-атаками.

Другие Элементы Управления XSS

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

Также читайте:

  • Как использовать очистку ввода для предотвращения веб-атак
  • 7 лучших практик обеспечения безопасности баз данных
  • Как предотвратить SQL-инъекцию: 5 основных методов предотвращения

3 типа атак с использованием межсайтовых сценариев

Существует три типа XSS-атак, каждый из которых имеет свои собственные методы и цели. Ниже мы рассмотрим каждый из них более подробно.

  • Сохраненный XSS включает в себя внедрение опасных скриптов, которые постоянно остаются на сервере.
  • XSS на основе объектной модели документа (DOM) манипулирует DOM для выполнения вредоносных операций непосредственно в браузере пользователя.
  • Отраженный XSS отражает вредоносные скрипты, введенные жертвой.

Сохраненный XSS

Сохраненный XSS предполагает долгосрочное хранение вредоносных сценариев или кода на веб-сервере, в базе данных или приложении. Эти сценарии затем предоставляются неосторожным людям, которые заходят на определенный веб-сайт или читают определенную часть информации. Чтобы избежать этого, дезинфицируйте и оценивайте все материалы, созданные пользователями, перед их сохранением и представлением на веб-сайтах.

Отраженный XSS

Отраженный XSS — это тип атаки, при которой вредоносные сценарии или код внедряются в URL-адрес или параметры запроса, а сервер отражает эти входные данные обратно пользователю в ответе. Когда пользователь нажимает на управляемую ссылку, он неосознанно запускает внедренный скрипт. Чтобы избежать этого, проверяйте и очищайте весь ввод пользователя, особенно информацию из параметров URL-адреса или полей формы.

XSS На Основе DOM

При XSS-атаке на основе DOM вредоносные сценарии манипулируют DOM, чтобы повредить операции. XSS на основе DOM не требует взаимодействия с сервером, в отличие от других XSS-атак. Прежде чем динамически изменять DOM, важно проверить и очистить вводимые пользователем данные, чтобы избежать этого.

3 реальных примера атак с использованием межсайтовых сценариев

British Airways, Fortnite и eBay — три наиболее заметные реальные жертвы XSS-атак, когда злоумышленники использовали уязвимости на своих веб-сайтах для внедрения вредоносных скриптов и компрометации пользовательских данных. Эти громкие нарушения подчеркивают исключительную важность внедрения надежных мер безопасности для защиты от таких киберугроз и защиты информации пользователей в постоянно меняющемся цифровом мире.

British Airways

В 2018 году British Airways стала целью Magecart, хакерской группы, известной своей тактикой скимминга кредитных карт. Они воспользовались уязвимостью XSS в библиотеке JavaScript Feedify, модифицировав скрипт и отправив информацию о частном клиенте на поддельный сервер. Поддельный сервер имел сертификат SSL, обманывая потребителей, заставляя их поверить в безопасность транзакций. Хакеры украли 380 000 транзакций бронирования, прежде чем кто-либо обнаружил уязвимость вредоносного ПО.

Fortnite

В 2019 году в Fortnite, популярной онлайн-игре с более чем 200 миллионами пользователей, была обнаружена ошибка XSS, о которой не сообщалось. Злоумышленники могли объединить проблему XSS с небезопасной уязвимостью единого входа (SSO), чтобы украсть виртуальные деньги, прослушать разговоры игроков и нанести ущерб. Check Point проинформировала Fortnite об атаке, но неясно, воспользовались ли злоумышленники этой уязвимостью в то время.

EBay

В 2015 и 2016 годах серьезная XSS-брешь на eBay позволила злоумышленникам вставить вредоносный код на страницы, предоставив им полный доступ к учетным записям продавцов. Последствия включали в себя товары со скидкой, платежные реквизиты и манипуляции с дорогостоящими товарами. Хотя eBay устранил ошибку, последующие атаки продолжались до 2017 года, что привело к длительной борьбе с угрозами.

Какие инструменты помогают предотвратить XSS-атаки?

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

Инструменты Сканирования Уязвимостей

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

  • XSStrike — это XSS-сканер с открытым исходным кодом, который может выявлять различные XSS-уязвимости. XSStrike может быть полезен для выявления возможных проблем XSS, но то, насколько хорошо он работает, может зависеть от особенностей тестируемого приложения.
  • XSS Hunter был создан для помощи аналитикам безопасности и программистам в обнаружении и мониторинге XSS-уязвимостей. Он способен находить и подтверждать проблемы XSS.
  • XSSER — еще один бесплатный XSS-сканер с открытым исходным кодом. Как и в случае с XSStrike, приложение и его меры безопасности помогут определить успех.
  • Acunetix — эффективный инструмент для поиска онлайн-уязвимостей, в том числе XSS-брешей. Он широко используется и пользуется большим уважением.
  • Burp Suite — еще один высоко оцененный инструмент для оценки безопасности онлайн-приложений. Несмотря на то, что он предлагает множество вариантов тестирования веб-приложений, то, как он настроен и используется, будет определять, насколько хорошо он будет обнаруживать XSS-уязвимости.
  • Intrumer — еще один сканер уязвимостей, используемый для выявления XSS-уязвимостей, а также других недостатков безопасности в онлайн-приложениях. Настройка и объем проверок безопасности помогут определить, насколько они эффективны.
  • Dalfox — это быстрый и эффективный инструмент XSS-сканирования с открытым исходным кодом. Его полезность зависит от ситуации, в которой он используется, как и другие сканеры.

Брандмауэры Веб-Приложений

Брандмауэр веб-приложений (WAF) — это устройство безопасности, которое отслеживает, фильтрует и блокирует вредоносный трафик до того, как он достигнет веб-приложения. Он действует как привратник, обнаруживая и блокируя такие атаки, как XSS и SQL-инъекция. WAF также обеспечивают защиту в режиме реального времени, активно анализируя трафик и блокируя вредоносные запросы.

Хотя WAF предлагают ряд средств защиты для веб-приложений, OWASP отмечает некоторые ограничения защиты XSS, заявляя, что они могут быть «ненадежными, и регулярно обнаруживаются новые методы обхода». WAF также не устраняют основную причину XSS-уязвимости. Кроме того, в WAF отсутствует класс XSS-уязвимостей, которые действуют исключительно на стороне клиента. WAF не рекомендуется использовать для предотвращения XSS, особенно XSS на основе DOM».

Итог: предотвращение XSS-атак

Уязвимости межсайтового скриптинга (XSS) слишком распространены, и организации, которые зависят от своих веб-сайтов и веб-приложений, должны уделять приоритетное внимание кибербезопасности и безопасным методам кодирования, чтобы сохранить свои активы – и репутацию бренда – в безопасности. XSS-атаки могут оставить на первый взгляд безобидные веб-страницы, полные деструктивных скриптов, что приведет к катастрофическим последствиям и вреду для клиентов.

Чтобы защитить свои веб-приложения, примите превентивные меры, такие как регулярное сканирование уязвимостей, использование файлов cookie только для HTTP, экранирование выходных данных и проверка вводимых пользователем данных. XSS-атаки происходят разными способами, и реализация проверки переменных, кодирования вывода и очистки HTML может помочь повысить безопасность.

Выполните рефакторинг своего кода, чтобы избежать небезопасных приемников, и полагайтесь на надежные библиотеки, такие как DOMPurify, для создания безопасного и удобного для пользователя веб-сайта. Уделение приоритетного внимания предотвращению XSS-атак и безопасности веб-приложений вселит уверенность в пользователей, зная, что они могут рассчитывать на безопасную работу.

атаки с использованием межсайтовых сценариев



Новости партнеров