HTML Academy · Урок

Политика безопасности содержимого: meta http-equiv

Задавайте политику безопасности содержимого через meta http-equiv

Урок 1 из 413 шагов

«Политика безопасности содержимого: 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 — локальная установка не требуется.

Все уроки этого курса

  1. Политика безопасности содержимого: meta http-equiv
  2. XSS через innerHTML и способы защиты
  3. Песочница iframe и политика разрешений
  4. HTTPS и целостность подресурсов
← Назад к HTML Academy