Политика Безопасности Контента. Начало
Политика безопасности контента (Content Security Policy, CSP) представляет собой HTTP-заголовок Content-Security-Policy, который указывает браузерам, откуда загружать (и, в случае JavaScript, исполнять) контент, что может сделать почти невозможным осуществление межсайтового скриптинга. Значение заголовка состоит из директив и связанных значений.
Основная директива
default-src предоставляет браузеру список всех действительных источников* или URI ресурсов.*Источник определяется как следующие три значения:
- схема – http: или https:;
- полностью определённое имя домена – www.example.com;
- порт – по умолчанию 80 для HTTP или 443 для HTTPS (если используется порт по умолчанию, то обычно он не является частью значения источника).
Если все три части различных источников идентичны, значит они совпадают. Например, у www.example.com и example.com разный источник, поскольку имена доменов не совпадают.
Кроме HTTP-заголовка можно использовать тег
<meta>:<meta http-equiv="Content-Security-Policy" content="default-src 'self'">Однако, это не очень удобно, когда значение директивы длинное. Кроме того, не будут работать некоторые функции CSP.
CSP определяет большое количество директив для различных видов ресурсов:
- base-uri – значения или пути, разрешенные для
<base href="">;- child-src - фреймы и веб-воркеры,
- connect-src - запросы HTTP и WebSocket,
- font-src – шрифты,
- form-action – значения для атрибута action элементов
<form>;- img-src – изображения,
- media-src - аудио- и видеофайлы,
- object-src – плагины,
- script-src - код JavaScript,
- style-src - cтили CSS,
и другие.
Специализированные директивы переопределяют значения
default-src.В заголовке директивы разделяются точкой с запятой, а их значения пробелами, например:
default-src 'self'; style-src 'self' https://cdn.jsdelivr.netЗдесь мы разрешаем использовать ресурсы только из того же источника, что и сама страница (
'self'), а также разрешаем получать стили из сети доставки контента (CDN). Заметьте, что для style-src также указано значение 'self', чтобы была возможность использовать локальные файлы стилей (т.к. style-src полностью перезаписывает значение default-src).Для указания источника есть следующие варианты:
- сайт –
https://example.com;- путь –
https://example.com/assets/ (завершающий слеш обязателен для указания папки, а не файла с таким именем);- полный URI –
https://example.com/assets/style.css;- подстановочный знак (
*).Рекомендуется использовать наиболее строгое указание источника, например, не разрешать все ресурсы из сети CDN.
Продолжение следует…
Источник: Кристиан Венц “Безопасность ASP.NET Core”. М.: ДМК Пресс, 2023. Глава 2.