# CSS в ИБ

CSS сам по себе не источник уязвимостей в веб-приложениях. Но существуют способы, где язык стилей — часть стратегии злоумышленников.&#x20;

1. Встроенный или внешний CSS может быть модифицирован для включения вредоносного кода. Это происходит, когда разработчики не фильтруют пользовательский ввод, который попадает в стили. В этом сценарии злоумышленники могут попытаться внедрить в CSS свои директивы.
2. Когда веб-сайты позволяют загрузку CSS-файлов с внешних источников, это может быть использовано для запуска атак на уровне протокола, таких как DNS-ребайндинг или атаки по промежуточным звеньям.
3. Clickjacking: CSS может использовать для маскировки вредоносных элементов интерфейса, делая их невидимыми или замаскированными.
4. Самый распространенный пример — это фишинг. Злоумышленники просто копируют известные ресурсы, повышая вероятность обмана и кражи конфиденциальной информации.
5. В CSS есть возможность подключения шрифтов или других ресурсов с использованием URL. Потенциально это можно использовать для загрузки вредоносного контента или отслеживания пользователей.

### Что можно сделать, чтобы обезопасить веб-приложение в контексте CSS? <br>

1. Включить CSP в заголовки ответов сервера. Это ограничит ресурсы (скрипты, стили, изображения и т. д.), которые могут загружаться на страницу. По сути это главный шаг против инъекций.
2. Фильтровать и санировать пользовательский ввод. Это тоже поможет предотвратить внедрение вредоносных данных и CSS-инъекции.
3. Использовать методологии BEM (Блок, Элемент, Модификатор) и CSS модули, компонентные подходы (например, в React с styled-components или Emotion). Это поможет избежать переопределения стилей и обеспечить модульность и изолированность.
4. Сократить использование inline-стилей, так как это потенциальный вектор для атак.
5. Использовать HTTPS, чтобы исключить возможность для [MITM](https://notes.kraken-security.ru/kraken/krupicy-znanii/ob-atake-mitm).
6. Проверять файлы CSS, загружаемые с серверов или CDN. Это поможет заметить подмену содержимого или добавление вредоносного кода.
7. Обновить браузеры и инструменты. Ну это база.&#x20;
8. Ограничить доступ на сервере таким образом, чтобы только авторизованные пользователи могли загружать или изменять CSS и другие ресурсы сайта.
