Оптимизация политик безопасности контента, чтобы оставаться в заголовке HTTP L

В CSP 3 способность разделить Скрипт-Src в Script-Src-Elem и Script-Src-Attr был добавлен. Это было предназначено для того, чтобы дать больше контроля над тем, что можно использовать в Элемент против того, что можно использовать в атрибуте JavaScript на элементе. Был период времени, когда вы хотите использовать Script-Src-Elem и Script-Src-Attr тебе все еще приходилось производить Скрипт-Src Поддерживать устройства и браузеры, которые еще не соответствовали CSP 3. Поддержка CSP 3 теперь очень широкая, поэтому вы можете опустить Script-SRC. Если у вас все еще много источников, и есть совпадение источников для Script-Src-Elem и Script-Src-Attr Затем вы можете вернуться к использованию Скрипт-Src вместо.

Больше и очень специфично:

script-src-elem 'self' 'nonce-r4nd0m' https://www.example.com https://www.elem-only.com;
script-src-attr 'self' https://www.example.com https://www.attr-only.com;

Меньше, но менее специфично:

script-src 'self' 'nonce-r4nd0m' https://www.example.com https://www.elem-only.com https://www.attr-only.com;

💡tip: Та же самая техника может быть использована для стиля SRC, Style-Src-Elem и Style-Src-ATTR.

2. Продолжайте по умолчанию SRC простым

А по умолчанию-SRC Директива служит отрывом для большинства других директив политики безопасности контента. Если такая директива, как Script-SRC или IMG-SRC, не определена явно, браузер вернется к тому, что вы установили в SRC по умолчанию. Чтобы уменьшить сложность и предотвратить чрезмерно допустимые значения по умолчанию, лучше всего сохранить по умолчанию-SRC как можно более плотно. В идеале ограничено вашим собственным доменом или даже отключено вообще.

Вот три практических варианта:

  • по умолчанию Src ‘none’; Блокирует все ресурсы, если только явно не допускается другой директивой. Это самый ограничительный и безопасный дефолт.
  • по умолчанию Src ‘self’; Позволяет только ресурсы из текущего домена. Это обычный и безопасный выбор для многих сайтов.
  • по умолчанию src ‘self’ https: //*.mydomain.com; Более разрешающе, это позволяет ресурсам из вашего домена и всех субдоменов. Будьте осторожны: это может включать в себя Dev, Test или Legacy Subdomains, если вы не намеренно не оцените их.

💡tip: Если вы уже указываете отдельные директивы, такие как Script-SRC, Style-SRC и IMG-SRC, вам может вообще не понадобиться разрешающий по умолчанию SRC. В этом случае рассмотрите возможность использования «нет», чтобы избежать случайного разрешения запасного поведения, которое вы не намеревались.

3. Держите Base-uri простым

А Элемент HTML определяет базовый URL для всех относительных ссылок на странице. А Базы Директива в вашей политике безопасности контента ограничивает, какие домены могут быть установлены в этом элементе.

Без этого ограничения злой актер мог бы изменить Элемент, чтобы перенаправить трафик ваших пользователей в домен, контролируемый злоумышленником. Например, злоумышленник может ввести Теги, вызывая все относительные ссылки на вашей странице, чтобы решить на злой сайт. Это может привести к фишинговым атакам, ввести в заблуждение пользователей в отправку конфиденциальной информации или загрузку вредного контента.

Поскольку эта директива служит очень специфической цели, лучше всего поддерживать ее, обычно к одному из следующих:

base-uri 'self';

or

base-uri 'self' https://*.mydomain.com;

4. Проще

Цель кадр-сериалы это ограничить, какие веб -сайты могут размещать ваш сайт CMS в iframe. Для большинства веб -сайтов это должно быть ограничено тем, что позволяет только саму веб -сайту:

frame-ancestors 'self';
or
frame-ancestors 'self'; https://*.mydomain.com;

Если вы используете оптимизированные веб -эксперименты, то вы также захотите разрешить Optimizely.com, чтобы позволить интерфейсу редактирования вариант работать:

frame-ancestors 'self'; https://*.mydomain.com https://*.optimizely.com;

5. Избегайте дублирующих записей

В политиках безопасности контента, которые я рассмотрел, я отметил, что было несколько экземпляров одного и того же домена, добавляемого дважды. Как с так, так и без зацепления, как так:

script-src 'self' https://www.example.com https://www.example.com/

В политике безопасности контента эти две формы функционально идентичны. Трейлинг -слэш Нет эффекта Когда источник – это просто хост (то есть без пути). Браузеры рассматривают оба как позволяющие всем контенту из происхождения https://www.example.com.

Read more:  Спасение детей закончилось сексуальным насилием – DW – 02.12.2025

Упростите свою политику Удаляя дубликаты и сохранив только одну чистую версию:

script-src 'self' https://www.example.com;

💡tip: Если вы используете источник CSP, который включает в себя ** путь **, то запекание*имеет значение*, и это будет ограничивать ресурсы только теми, кто непосредственно под пути:

    • https://example.com/js/ mockes /js/app.js
    • https://example.com/js совпадает/JS

6. Проверьте, покрывают ли поддомины подстановочного знака более конкретные домены

В сообщенных примерах я обнаружил несколько экземпляров избыточных записей подстановочного знака для тесно связанных доменов. Эти примеры включали:

script-src https://*.consentmanager.net https://*.delivery.consentmanager.net https://*.fls.doubleclick.net https://*.g.doubleclick.net https://*.doubleclick.net

При использовании источника подстановочного знака, такого как https: //*.example.com, важно понять, как ведут себя подстановочные знаки:

  • https: //*.example.com соответствует любому количеству уровней субдомена, такими как cdn.sub.example.com
  • Он ** не ** соответствует самому домену Apex (то есть https://example.com)

Зная это, мы можем упростить политику безопасности контента:

script-src https://*.consentmanager.net https://*.doubleclick.net;

💡 Кончик: Всегда убедитесь, что более широкие подстановочные знаки покрывают все необходимые источники и не вносят нежелательный доступ. Если требуется корневой домен (например, https://doubleclick.net), он все равно должен быть указан отдельно. Он не включен в подстановочный знак, как *.doubleclick.net.

7. Будьте осторожны с HTTPS: и WSS: протоколы подстановочных знаков в директивах источников

В больших многонациональных платформах CMS (особенно те, где редакторы часто встраивают сторонний контент, такие как формы пожертвований, интерактивные виджеты или просмотры 360 °), политики безопасности контента могут стать труднодоступными. В этих случаях заманчиво использовать широкую директиву, подобную:

frame-src 'self' https:;

Это позволяет любому контенту быть иримедом, если он подается на HTTP, что может быть Прагматическое краткосрочное решение Когда источники контента постоянно меняются и трудно управлять. Тем не менее, это удобство сопровождается серьезными компромиссами.

С использованием https: эффективно говорит браузеру разрешить любой Безопасный домен, а не только доверенные партнеры. Это означает, что явное перечисление домена, такого как https://example.com, является избыточным, и, что еще хуже, также неявно разрешает https://malicious.site или любой другой домен на основе HTTPS для загрузки сценариев или рам на вашем сайте. Такое же поведение существует и для WSS: и http: протоколы. Так что будьте осторожны при их использовании или полностью избегайте их:

script-src 'self' https: https://example.com;  // Redundant and risky

💡Рекомендация: Пока https: или WSS: может показаться полезным ярлыком, как правило, лучше определить конкретный разрешить список надежных областей. Избегать https: и WSS: В качестве автономного протокола только источники и вместо этого используйте полностью квалифицированные записи, такие как https://trustedpartner.com, чтобы сохранить контроль и минимизировать ваше воздействие на сторонние угрозы.

Read more:  Иммиграция Бали образует специальную целевую группу, чтобы расстроить непослушных туристов - Архипелаг

8. Аудиция политики безопасности контента

Оптимизитно отмечали, что большинство веб -сайтов проходят в среднем пять лет между восстановлением или ребрендами. За это время часто добавляют и удаляют сторонние инструменты, часто через такие платформы, как Google Tag Manager (GTM). Каждый раз, когда вводится инструмент, обычно требуется обновления вашей политики безопасности контента, чтобы разрешить сценарии, iframes или подключения из новых доменов.

Но что происходит, когда вы перестаете использовать один из этих инструментов? Легко забыть удалить эти разрешения из вашей политики безопасности контента. Со временем это приводит к раздутой, устаревшей и потенциально менее безопасной политике.

А Стотт Безопасность Модуль включает функции, которые облегчают аудит:

  1. Перейдите к Stott Security Interface
  2. На Инструменты Страница, экспорт вашей текущей конфигурации безопасности
  3. На Настройки CSP страница:
    1. Давать возможность “Используйте режим только для сообщений”
    2. Давать возможность «Используйте внутренние конечные точки отчетности»
  4. Начните удалять источники CSP, вы считаете, что больше не используются
  5. Контролировать Нарушения CSP страница, чтобы подтвердить, перерываются ли какие -либо законные контент

Если возникают какие-либо проблемы, вы можете просто повторно импортировать сохраненную конфигурацию со страницы инструментов. Как только вы уверены, что ваша обновленная политика безопасна, выключите “Используйте режим только для сообщений” и «Используйте внутренние конечные точки отчетности» для обеспечения соблюдения оптимизированной политики и сокращения трафика в веб -сервер, вызванный отчетами CSP.

9. Используйте конкретные расширения страницы исходного списка

Стотт Безопасность давно поддерживает возможность расширить источники для политики безопасности контента для конкретной страницы. Допустим, у вас есть веб -сайт с большим количеством встроенного контента, и большая часть этого довольно уникальна. Вы можете в конечном итоге вздутие живота, просто пытаясь не отставать от количества встроений. Это может быть нежелательным, потому что в конечном итоге вы позволите домену действовать все вашего сайта, когда это требуется только на одной странице.

Чтобы реализовать это, ваша команда по разработке или партнер агентства может реализовать Icontentsecurypollypage Интерфейс либо в качестве редактируемого CMS, либо с помощью кода, который вы реализуете себя следующим образом:

public class MyPage : PageData, IContentSecurityPolicyPage
{
    [Display(
        Name = "Content Security Policy Sources",
        Description = "The following Content Security Policy Sources will be merged into the global Content Security Policy when visiting this page",
        GroupName = "Security",
        Order = 10)]
    [EditorDescriptor(EditorDescriptorType = typeof(CspSourceMappingEditorDescriptor))]
    public virtual IList

Когда эта страница обслуживается, указанные здесь источники и директивы объединены в глобальную политику безопасности контента только для целей обслуживания этой страницы.

Read more:  Опрос показал, что калифорнийцы резко разделились по партийным линиям по поводу иммиграционных рейдов

Изменения в STOTT Security для оптимизации CMS 12

Чтобы предотвратить другие Cusumers Стотт Безопасность Столкнувшись с той же проблемой с ограничениями размера заголовка, я решил, что добавлю несколько сетей безопасности для сгенерированной политики безопасности контента, которая будет уважать жесткий предел CloudFlare на 16 КБ. При исследовании ограничений размера заголовка в целом я заметил, что наиболее распространенной рекомендацией было поддерживать ваши заголовки ниже 8 КБ на заголовок, чтобы обеспечить широкую совместимость.

Начиная с версии 3.0.2 Стотт БезопасностьCSP теперь разумно разделены на Несколько заголовков CSP Если их размер приближается к пределу 8 КБ. Поскольку браузеры применяют наиболее ограничительную политику среди нескольких заголовков CSP, эти заголовки тщательно разделены на основе директивной иерархии и запасного поведения.

Если заголовок растет за пределами 12 КБ, дополнительная логика применяется для консолидации директив следующим образом:

  • Script-Src-Elem и Script-Src-Attr объединены в Скрипт-SrcПолем
  • Стиль-SRC-Elem и Стиль-Src-Attr объединены в Стиль-SrcПолем
  • кадр-SrcВ Рабочий-Src объединены в ребенок-SRCПолем
  • Любые пропущенные директивы в стиле источника, возвращающиеся по умолчанию-SRC добавляются явно, не дефол ‘себя’ При необходимости.

В качестве последней гарантии, если объединенный размер всех заголовков CSP приближается к пределу облачного фларма 16 КБ, CSP не будет генерироваться, чтобы избежать неожиданных сбоев.

Краткое содержание

Чтобы упростить политику безопасности контента и сохранить ее ниже рекомендации 8 КБ или ограничения Cloudflare на 16 КБ. Рассмотрите следующее:

  • Упростить использование директив
    • Используйте только Скрипт-Src вместо Script-Src, Script-Src-Elem и Script-Src-Attr
    • Используйте только Стиль-Src вместо стиль-src, Стиль-SRC-Elem и Стиль-Src-Attr
    • Держать по умолчанию-SRCВ Базы и кадр-сериалы просто, ограничивая их просто ‘себя’
  • Избегайте дублирующихся записей, таких как https://www.example.com и https://www.example.com/
  • Избегайте использования менее конкретных подстановочных знаков (https: //*.one.example.com), если уже есть более разрешающий подстановку (https: //*.example.com).
  • Рассмотрим использование https: и WSS: протокол подстановодов очень тщательно, как и позволяет все Домены, а не только те, которые вы указываете.
  • Проверьте политику безопасности контента и удалите разрешения для сценариев, которые вы больше не используете.
  • Рассмотрите возможность использования конкретного расширения функции политики безопасности контента, которая является частью Стотт Безопасность
  • Рассмотреть возможность обновления до последней версии Стотт Безопасность Сегодня, чтобы извлечь выгоду из автоматического упрощения CSP и защитить ваши серверы от раздутых политик безопасности контента.

Вы можете найти весь мой контент, собранный на https://www.stott.pro/

Читайте также

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.