Content-Security-Policy: продолжаем бороться с XSS
Когда я писал про CSRF, то говорил что важно настроить CSP (Content-Security-Policy). Что это такое?
Content-Security-Policy - это дополнительный уровень безопасности, который помогает обнаруживать и смягчать определенные типы атак, включая Cross Scripting (XSS) и атаки на инъекции данных. Эти атаки используются для всего: от кражи данных до повреждения сайта или распространения вредоносного ПО.
Чтобы включить CSP, вам необходимо настроить веб-сервер для возврата HTTP-заголовка Content-Security-Policy.
В качестве альтернативы может использоваться элемент meta для настройки политики, например:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https: // *; child-src 'none'" />
Примеры: общие случаи использования
Пример 1:
Администратор веб-сайта хочет, чтобы весь контент поступал из собственного источника сайта (это исключает субдомены).
Content-Security-Policy: default-src 'self'
Пример 2:
Администратор веб-сайта хочет разрешить пользователям веб-приложения включать изображения из любого источника в свой собственный контент, но ограничивать аудио- или видеоматериалы доверенными поставщиками и все сценарии только для определенного сервера, на котором размещен доверенный код.
Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com
Здесь по умолчанию содержимое разрешено только из источника документа со следующими исключениями:
- Изображения могут загружаться из любого места (обратите внимание на «*»).
- Медиа разрешено только с
media1.comиmedia2.com(а не из поддоменов этих сайтов). - Исполняемый скрипт разрешен только с
usercripts.example.com.
Включение отчетов
По умолчанию отчеты о нарушении не отправляются. Чтобы включить отчет о нарушении, вам нужно указать директиву политики report-uri, предоставляя по крайней мере один URI для доставки отчетов:
Content-Security-Policy: default-src 'self'; report-uri reportcollector.example.com/collector;
Затем вам нужно настроить сервер для получения отчетов; он может хранить или обрабатывать их любым способом, который, по вашему мнению, является уместным.
Синтаксис отчета о нарушении
JSON отчета содержит следующие данные:
blocked-uriURI ресурса, который был заблокирован от загрузки по политике безопасности контента. Если заблокированный URI имеет другое происхождение, чемdocument-uri, тогда заблокированный URI усекается, чтобы содержать только схему, хост и порт.dispositionЛибо «enforce», либо «reporting» в зависимости от того, используется ли заголовок Content-Security-Policy-Report-Only или заголовок Content-Security-Policy.document-uriURI документа, в котором произошло нарушение.effective-directiveДиректива, чья информация вызвала нарушение.original-policyИсходная политика, указанная в HTTP-заголовке Content-Security-Policy.referrerСсылка на документ, в котором произошло нарушение.script-sampleПервые 40 символов встроенного скрипта, обработчика события или стиля, вызвавшего нарушение.status-codeКод состояния HTTP ресурса, на котором был создан глобальный объект.violated-directiveНазвание раздела политики, которое было нарушено.
Оставить комментарий могут только зарегистрированные пользователи.
Войдите на сайт или зарегистрируйтесь, чтобы оставить комментарий.