Всего лишь несколько лет назад вы могли застать настоящую эпоху расцвета XSS уязвимостей. Тогда халатность веб-разработчиков достигала не просто высокого, а даже профессионального уровня. Сегодня веб-мастера уже стали более серьезно подходить к этой проблеме. В этой короткой статье я расскажу о лучших способах защиты от XSS-атак.
Еще по теме: Автоматизация поиска XSS уязвимостей
XSS уязвимость
Что такое XSS?
XSS — это уязвимость веб-страниц, возникающая в результате попадания в них пользовательских JS-скриптов.
Где и как используют XSS уязвимости?
Вот несколько самых популярных направлений:
- Доступ. Одна из главных целей XSS заключается именно в том, чтобы получить cookie жертвы и проникнуть в ее аккаунт. Для этого необходимо найти соответствующую уязвимость, вставить на страницу скрипт отправки cookie на снифер, а затем использовать сграбленные cookie для доступа на нужный сайт.
- Трафик (баннеры, голосования, сплойты и многое другое). XSS используют также и для добычи трафика. Например, с помощью вставки iframe кода связки эксплойтов или даже открытия нового окна со ссылкой.
- Рабочая сила. Через хитрые комбинации JavaScript + PHP проводят банальную прогрузку капчи для ее халявной расшифровки юзерами чужого ресурса. Для этого атакованная страница блокируется до тех пор, пока пользователь не введет код с нее.
- CSRF. Иногда, даже имея логин и пароль/сессию, хакер не может попасть в аккаунт, так как привязка может быть к ip-адресу, браузеру и другим данным. Поэтому XSS в чистом виде не проходит. Но, зная конструкцию сайта, злоумышленник все равно сможем попасть в аккаунт с помощью межсайтовой подделки запроса.
Защита от XSS атак
ТОП-5 защит от XSS уязвимостей:
- Защита функцией htmlspecialchars(). Данная функция преобразует переданный ей аргумент в HTML-сущности, причем происходит преобразование именно тех символов, которые являются потенциально небезопасными.
- Защита функцией strip_tags(). В отличие от htmlspecialchars() данная функция удаляет из строки аргумента только сами теги, причем второй аргумент служит для указания исключений, которые не нужно удалять. Через нее спокойно проходят строки: <, >, < img.
- BB-коды. Пропуск только определенных тегов, иногда совсем в иной форме, чем позволяют стандарты HTML
- Регулярные выражения. Кто-то регулярки любит, кто-то нет, а кто-то даже предпочитает написать свою собственную, через которую не проходят потенциально опасные символы или теги. Удобно в случае исключения аргументов из внедряемого тега без изменения HTML-сущности оставшейся части.
- Самописные функции. Всевозможные рекурсивные парсеры строк, которые очень гибко борются с XSS, также довольно популярны. Хотя в самописных функциях гораздо чаще можно найти какую-либо уязвимость.
На сегодня все. Всем удачи и информационной безопасности.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Пример полезной нагрузки XSS в SSRF
- Обход WAF короткой полезной нагрузкой XSS
- 10 популярных полезных нагрузок XSS для баг-баунти