Когда я писал про 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'" />
Администратор веб-сайта хочет, чтобы весь контент поступал из собственного источника сайта (это исключает субдомены).
Content-Security-Policy: default-src 'self'
Администратор веб-сайта хочет разрешить пользователям веб-приложения включать изображения из любого источника в свой собственный контент, но ограничивать аудио- или видеоматериалы доверенными поставщиками и все сценарии только для определенного сервера, на котором размещен доверенный код.
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-uri URI ресурса, который был заблокирован от загрузки по политике безопасности контента. Если заблокированный URI имеет другое происхождение, чем document-uri, тогда заблокированный URI усекается, чтобы содержать только схему, хост и порт.disposition Либо «enforce», либо «reporting» в зависимости от того, используется ли заголовок Content-Security-Policy-Report-Only или заголовок Content-Security-Policy.document-uri URI документа, в котором произошло нарушение.effective-directive Директива, чья информация вызвала нарушение.original-policy Исходная политика, указанная в HTTP-заголовке Content-Security-Policy.referrer Ссылка на документ, в котором произошло нарушение.script-sample Первые 40 символов встроенного скрипта, обработчика события или стиля, вызвавшего нарушение.status-code Код состояния HTTP ресурса, на котором был создан глобальный объект.violated-directive Название раздела политики, которое было нарушено.