Политика безопасности содержимого: meta http-equiv
Задавайте политику безопасности содержимого через meta http-equiv
«Политика безопасности содержимого: meta http-equiv» — бесплатный урок HTML Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения HTML Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс HTML Academy содержит 4 уроков всего.
Что такое CSP
Политика безопасности содержимого — это политика, принудительно применяемая браузером и ограничивающая ресурсы, которые страница может загружать и выполнять. Это самая сильная защита от межсайтового выполнения сценариев: даже если злоумышленник внедрит тег <script>, браузер откажется его выполнять, если политика этого не разрешает.
Два способа задать CSP
CSP можно передать в заголовке HTTP-ответа (Content-Security-Policy: ...) или в виде мета-тега HTML: <meta http-equiv="Content-Security-Policy" content="...">. Заголовок предпочтительнее; мета-тег полезен, когда у вас нет доступа к настройкам сервера.
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; script-src 'self' https://cdn.example.com">Распространённые директивы
default-src — резервное правило для неуказанных типов ресурсов. Директивы script-src, style-src, img-src, connect-src (XHR/получение данных), font-src и frame-src ограничивают каждый свой тип. Разрешайте конкретные источники или используйте 'self', чтобы разрешить только тот же источник.
Ключевое слово self
'self' (в кавычках) обозначает собственный источник страницы. script-src 'self' означает: "выполнять только сценарии, размещённые в том же источнике, что и страница". Это основа большинства политик; при необходимости добавляйте конкретные внешние сети доставки содержимого.
Блокировка встроенных сценариев
По умолчанию CSP блокирует все встроенные теги <script> и атрибуты обработчиков событий (onclick). Это самая сильная защита от XSS: внедрённый <script> не может выполниться, потому что он встроен в страницу. Перенесите все сценарии во внешние файлы, на которые ссылается src.
Одноразовые токены и хеши
Для необходимых встроенных сценариев используйте одноразовый токен: сервер генерирует случайный токен для каждого запроса, задаёт его как script-src 'nonce-RANDOM' в CSP и добавляет nonce="RANDOM" к легитимным тегам <script>. У внедрённых сценариев нет этого токена, поэтому они блокируются.
<meta http-equiv="Content-Security-Policy"
content="script-src 'nonce-abc123'">
<script nonce="abc123">// allowed</script>
<script>// blocked — no nonce</script>unsafe-inline и unsafe-eval
'unsafe-inline' снова разрешает встроенные сценарии и стили. 'unsafe-eval' снова разрешает eval() и new Function(). Обе директивы значительно ослабляют CSP — используйте их только как крайний вариант во время миграции и запланируйте их удаление.
Ограничения мета-тега
CSP, переданная через мета-тег, не может использовать директиву report-uri и другие функции отчётности. Кроме того, она начинает действовать позже, чем заголовок: всё, что находится до мета-тега, не защищено. Заголовки строго предпочтительнее; используйте мета-тег только как резервный вариант.
Режим только отчётности
Проверьте новую политику, не нарушая работу сайта: Content-Security-Policy-Report-Only: .... Браузер сообщает о нарушениях, но не блокирует их, поэтому вы можете уточнять политику, пока она не начнёт разрешать все легитимные ресурсы, а затем включить принудительное применение.
Распространённые ошибки
Если забыть style-src 'unsafe-inline', будут заблокированы встроенные стили, которые часто создаются фреймворками. Если забыть connect-src, будут заблокированы AJAX-запросы к интерфейсам. Всегда сначала проверяйте политику в режиме только отчётности и просматривайте консоль в поисках заблокированных ресурсов.
Современная стратегия CSP
Строгая CSP объединяет script-src 'nonce-RANDOM' 'strict-dynamic' для сценариев с жёстким списком разрешений для остальных ресурсов. 'strict-dynamic' позволяет сценариям с одноразовым токеном загружать дополнительные сценарии без перечисления каждого из них — это гораздо проще поддерживать, чем списки разрешённых источников.
Проверка знаний
Как CSP защищает от атак XSS, даже если злоумышленнику удалось внедрить тег сценария?
Краткое содержание
CSP — это политика, принудительно применяемая браузером и ограничивающая загрузку сценариев, стилей, изображений и других ресурсов. Передавайте её через заголовок ответа (предпочтительно) или мета-тег. Используйте одноразовые токены для необходимых встроенных сценариев, избегайте unsafe-inline и unsafe-eval, сначала проверяйте политику в режиме только отчётности. Строгая CSP с 'nonce-X' 'strict-dynamic' — современная базовая стратегия.
Изучай HTML с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 40
- Уроки
- 159
Часто задаваемые вопросы
Урок «Политика безопасности содержимого: meta http-equiv» бесплатный?
Да — полный текст урока «Политика безопасности содержимого: meta http-equiv» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс HTML Academy, подпишись на CoddyKit PRO. Курс HTML Academy содержит 4 уроков всего.
Чему я научусь в уроке «Политика безопасности содержимого: meta http-equiv»?
Задавайте политику безопасности содержимого через meta http-equiv Ты практикуешь HTML Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать HTML Academy?
Предыдущий опыт не требуется. HTML Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Политика безопасности содержимого: meta http-equiv»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке HTML Academy?
Да. Каждый урок HTML Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Политика безопасности содержимого: meta http-equiv
- XSS через innerHTML и способы защиты
- Песочница iframe и политика разрешений
- HTTPS и целостность подресурсов