Современные реалии таковы, что не каждый бизнес может себе позволить сайт, особенно стартующий бизнес. Поэтому выгодно воспользоваться конструктором сайтов, например filandor.com . Запуск сайта через несколько минут.

Современные веб-приложения сложны, часто загружают библиотеки JavaScript из десятков различных источников и отправляют данные в такое же количество источников. Это приводит к обширной зоне атаки и множеству типов атак, которые хакеры могут использовать для непосредственного нападения на браузер пользователя. Хорошим примером является Magecart, категория атак на цепочку поставок.

Чтобы бороться с этим, производители браузеров (Google, Microsoft, Mozilla и т. д.) договорились о стандарте, который позволяет владельцам приложений контролировать поведение браузера с точки зрения безопасности. Этот стандарт называется политиками безопасности контента (CSP). Политики безопасности контента реализуются владельцами приложений в виде специально отформатированного заголовка ответа HTTP, который затем анализируется и применяется браузером. Этот заголовок можно использовать, например, для принудительной загрузки библиотек JavaScript только с определенного набора URL-адресов. CSP хороши, поскольку уменьшают поверхность атаки, но их сложно реализовать и управлять ими, особенно в быстро меняющейся среде разработки.

Начиная с сегодняшнего дня, Page Shield, наш продукт безопасности на стороне клиента, поддерживает все основные директивы CSP. Мы также добавили улучшенные отчеты, автоматические предложения и специальные роли пользователей Page Shield, что значительно упрощает управление CSP.

Если вы являетесь корпоративным клиентом Page Shield, войдите в свою панель управления, чтобы немедленно воспользоваться новыми функциями.

Правила защиты страниц

Допустим, вы только что создали веб-приложение. Для простоты вы использовали ряд сервисов для реализации определенных функций: Stripe для оформления заказа и Zendesk для системы чата.

Эти две системы требуют, чтобы вы «встроили» файлы JavaScript в свое приложение. После этого эти виджеты также отправят данные обратно на соответствующие конечные точки — например, на серверы Zendesk, если кто-то взаимодействует с виджетом чата Zendesk.

Вы также загружаете файл JavaScript, созданный вами для некоторых простых взаимодействий в вашем веб-приложении. Этот файл размещается непосредственно на вашем сервере под собственным доменом вашего сайта, скажем example.com.

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

Этого можно добиться, используя политики Page Shield — абстракцию поверх политик безопасности контента (CSP) с целью упростить CSP. Эта система позволяет вам принять позитивную модель безопасности, позволяя вам определить, что является допустимыйи блокировать все остальное по умолчанию.

Для этого нам нужно выполнить несколько простых шагов. Сначала войдите в Cloudflare и перейдите в соответствующую зону → Безопасность → Щит страницы → Политики → Создать политику. Нам представлена ​​следующая страница:

Пользовательский интерфейс конструктора политик Page Shield

Вставьте имя политики (например, my website policy) и при необходимости выберите, используя наш стандартный синтаксис Wirefilter, то место, где вы хотите применить политику. Например, если мы хотим, чтобы политика применялась только на наших страницах оформления заказа, где существует более высокий риск утечки данных, мы можем выбрать:

Если входящие запросы совпадают… Путь URI содержит «checkout».

В пользовательском интерфейсе это будет представлено следующим образом:

Фильтр конструктора политик Page Shield

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

Далее нам нужно определить, откуда скриптам разрешено загружать и куда им разрешено отправлять данные. Для этого мы можем использовать две директивы: script-src (Scripts) и директива connect-src Директива (Соединения).

Для Stripe на момент написания скрипты будут загружаться со следующего URL:

https://checkout.stripe.com

Этот же URL-адрес также используется для отправки данных обратно в систему Stripes. Zendesk похож, но для простоты мы остановимся только на Stripe в этом примере. Вы также загружаете файл JavaScript со своего сайта, example.com упомянутый ранее.

Из Добавить новую директиву раскрывающийся список, выберите Скрипты:

Список директив политики Page Shield

После добавления директива скрипта отобразит:

Пример предложений по директиве сценария построителя политики Page Shield

Вот тут-то и начинается волшебство. Если на вашем сайте включен Page Shield, вы можете заметить, что он, возможно, уже обнаружил файлы JavaScript, загружаемые вашим сайтом, и предложит их вам в виде простого списка флажков. Больше не нужно гоняться за членами команды разработчиков, чтобы понять, что загружается на ваш сайт.

Создание директивы становится простым упражнением по контрольному списку. Конструктор позволяет вам решить, хотите ли вы разрешить использование сценариев из целых доменов или перейти только к конкретным URL-адресам. В обычных обстоятельствах следует ожидать разрешения всех обнаруженных сценариев. Для Stripe конфигурация директивы будет выглядеть следующим образом:

Развернутый пример предложений по директиве сценария построителя политики Page Shield

Предварительный просмотр директивы показан под конструктором.

Еще один пример: помните, что вы также загружаете скрипт со своего сайта? Это выявляется в соответствии с example.com запись в списке. Однако загрузка сценариев из одного и того же источника очень распространена, и для обеспечения хорошего баланса между простотой и безопасностью CSP допускают использование сокращенного ключевого слова: self, доступен в верхней части конструктора. Наша окончательная политика будет выглядеть так:

Пример ключевого слова директивы сценария построения политики Page Shield

И это основы. Просто повторите шаги для connect-src (Соединения) (куда следует отправлять данные) и развернуть политику либо в LOG (для тестирования) или ALLOW (исполнение). В результате ваши пользователи будут в большей безопасности.

Лучшие предложения по политике

Механизм предложений, показанный выше, теперь стал намного лучше, что упрощает создание политик Page Shield. Мы добавили полную поддержку connect-src (Соединения) в дополнение к script-src (Scripts), и теперь мы настраиваем предложения в зависимости от того, где вы хотите развернуть политику.

Например, если вы решите развернуть политику только на страницах оформления заказа, это будет показано так:

Если входящие запросы совпадают… Путь URI содержит «checkout».

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

Кроме того, разработчик постарается оптимизировать политику для вас, позволяя вам легко выбрать правильный уровень точности в вашем проекте. ALLOW список. Например, если вы загружаете сотни сценариев из определенного места назначения, вам будет предложено разрешить имя хоста, а не все URL-адреса сценариев.

Теперь поддерживаются все основные директивы CSP.

До сегодняшнего дня мы поддерживали только script-src (Scripts), позволяющая определить, откуда разрешена загрузка скриптов. Начиная с сегодняшнего дня, мы поддерживаем все основные директивы. Однако обратите внимание, что мы поддерживаем только предложения по script-src и connect-src. Предложения по остальным директивам включены в дорожную карту.

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

Директива Умные предложения Описание
источник сценария Определите, откуда разрешено загружать файлы JavaScript.
Connect-SRC Определите, куда могут быть отправлены данные.
источник по умолчанию Применяемое поведение по умолчанию.
img-источник Определите, откуда разрешена загрузка изображений.
стиль-источник Определите, откуда разрешено загружать таблицы стилей (CSS).
шрифт-источник Определите, откуда разрешено загружать файлы шрифтов.
объект-источник Определите, откуда разрешено загружать объекты (HTML).
медиа-источник Определите, откуда разрешена загрузка медиафайлов (например, mp4)
ребенок-источник Определите, откуда разрешена загрузка веб-работников и вложенных контекстов браузера.
форма-действие Определите, куда формам должно быть разрешено публиковать данные.
рабочий-источник Определите, откуда разрешено загружать рабочие процессы.
база-ури Определите, какие URL-адреса могут использоваться в базовом элементе документа.
манифест-источник Определите, какие манифесты можно применять.
фрейм-источник Определите, какие URL-адреса можно встраивать в HTML-фреймы iframe.
предки рамы Определите, какие родительские источники могут встраивать данную страницу в iframe HTML (в отличие от Frame-src).

Кроме того, мы также поддерживаем upgrade-insecure-requests директива. Это специальное ключевое слово, которое заставит браузер автоматически конвертировать все URL-адреса HTTP в HTTP. Эта функция аналогична нашей функции «Всегда использовать HTTPS», но заставляет браузер обновлять запросы, а не использовать наш прокси-сервер для выполнения аналогичного действия. Обе функции могут работать совместно.

Официальная документация Mozilla CSP — отличный ресурс для получения дополнительной информации о каждой директиве CSP.

Импортируйте существующие политики CSP сегодня

Многие клиенты, использующие Page Shield, спрашивали, могут ли они импортировать существующие политики CSP в продукт. Мы сделали первый шаг, чтобы сделать этот опыт возможным, позволив вам вставить существующий CSP непосредственно в интерфейс политики:

Всплывающее окно импорта политики Page Shield

После вставки и импорта система автоматически проанализирует все найденные директивы в конструкторе, что позволит вам впоследствии редактировать их по мере необходимости. Если ваша политика содержит устаревшие директивы или директивы, которые в настоящее время не поддерживаются, будет отображено соответствующее сообщение об ошибке, позволяющее вам внести изменения, прежде чем повторять попытку.

Улучшенная отчетность о нарушениях

После развертывания политики Page Shield важно определить ее поведение: правильно ли она реализована? Вы что-то пропустили?

По совпадению, это еще один аспект, с которым трудно справиться. CSP позволяет вам определить конечную точку, куда браузеры будут отправлять отчеты о нарушениях (ошибках). Однако объем ошибок может быть значительным, особенно для крупных приложений, требующих внедрения совершенно нового набора конвейеров журналирования и инфраструктуры.

Page Shield делает все это за вас «из коробки».

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

Отчеты о нарушениях правил защиты страниц

Статистика домена

В этом выпуске мы также воспользовались возможностью улучшить страницу сведений о ресурсе, добавив информацию о домене. Информация WHOIS доменного имени часто является очень хорошим индикатором потенциальной вредоносности ресурса JavaScript или конечной точки соединения. Например, некоторые опасения должны вызывать данные, отправляемые на недавно зарегистрированный домен. Мы также предоставили все имеющиеся у нас классификации для любого конкретного домена, что позволяет вам быстрее просматривать данные без необходимости переходить в наш Центр безопасности или Cloudflare Radar.

Статистика домена для ресурса, размещенного на cndjs.cloudflare.com

Разрешения пользователя Page Shield

И последнее. Если вам нужны только определенные члены команды, чтобы просмотреть или развернуть политики с помощью Cloudflare Page Shield, теперь это возможно. В информационной панели реализованы две новые роли пользователя: «Защита страницы» (запись/чтение) и «Защита страницы» (чтение). Вы можете найти эти роли доступными при приглашении новых пользователей (или редактировании существующих пользователей) на панель управления Cloudflare.

Начните использовать Page Shield сегодня

Большинство функций, обсуждаемых в этом посте, доступны только для корпоративных клиентов надстроек Page Shield. Дополнительные сведения можно найти в нашей документации для разработчиков. Однако Page Shield доступен всем пользователям плана Pro и выше с ограниченным набором функций. Включить Page Shield так же просто, как один щелчок.

Подойдите к приборной панели, включите ее и сообщите нам, что вы думаете.

Следите за нашей следующей публикацией Page Shield, в которой мы обсудим, как легко удовлетворить требования клиентской стороны PCI DSS 4.0 с помощью Page Shield.