Content Security Policy (CSP) для InstantCMS 2 2.X

537
День добрый,

Content Security Policy (CSP) — технология для обеспечения безопасности пользователей, позволяющая вебмастеру четко объяснить браузеру, на какие адреса тот может выполнять межсайтовые запросы. Суть технологии заключается в том, что администратор сайта может указать список разрешенных источников для загрузки контента (скриптов, стилей, иллюстрация и тд..) И злоумышленник не сможет добавить на страницу что-то постороннее - рекламу, мобильный редирект и тд..

Несколько ссылок, где об этом можно почитать подробней

Описание директив на mozilla.org (на англ языке)
Улучшение сетевой безопасности с помощью Content Security Policy (хабр)
Как настроить Content Security Policy (CSP) на zabolotskikh.com
Инструкция от Google (на англ языке)
99 страниц на серче...

Частые заблуждения

1. У меня сайт на https и мне это не нужно
Нужно, https и CSP это разные вещи и они никак не связаны (и не заменяют друг друга - и то, и другое желательно). CSP используют такие гиганты как Facebook, Twitter, Gmail, Яндекс почта и тд.. список можно продолжать (это можно проверить посмотрев ответ сервера в консоли). Все эти сайты давным давно работают на https и тем не менее настраивают политику безопасности для контента.

2. Треть (четверть, одна восьмая) моих пользователей не смогут пользоваться сайтом
И тут опять можно вспомнить про Facebook, Twitter, Gmail, Яндекс почта и тд. CSP не усложняет доступ к сайту, а делает его безопасней.

Цена свободная. Вопросы по настройке можно кидать прямо в комментах.
Обновление компонентов для корректной работы в InstantCMS 2.8.1 | Видео Туториал - создание компонента "Мастер Виджетов"
Комментарии (16)
Олег Васильевич я 12 сентября 2017 в 18:51 +3
small user social cms
Спасибо!
Хотелось бы верить, что ваш энтузиазм по отношению к инстанту не иссякнет уж слишком быстро.
Dorimen 12 сентября 2017 в 19:59 0
no avatar
Крутая тема. Удивительно, но все Ваши разработки как-то очень нужные и актуальные и сразу занимают скачиваются и устанавливаются ))
Dorimen 12 сентября 2017 в 20:21 0
no avatar
Установил... Что-то пока ноль реакции )))



@SmartControl 12 сентября 2017 в 20:32 0
small user social cms
Я на видео показал - надо включить режим только отчёты и вбить любой символ в поле default-src. Посмотрите на видео, ну и проверьте события. Может быть к вам автоматом они не добавляются в базу, и надо добавить через админку.
Dorimen 12 сентября 2017 в 20:37 0
no avatar
Да это я все включал...





Dorimen 12 сентября 2017 в 20:46 0
no avatar
Может быть из-за того, что установлена http-авторизация?
@SmartControl 12 сентября 2017 в 22:00 +1
small user social cms
Проверил сейчас на новом домене с нуля.
1. Установил (события сами обновились, флаг стоит в настройках для этого)
2. Открыл настройки - поставил отчеты, логирование, цифру 1 в поле default-src
3. На сайте вижу ошибки CSP и заголовок соответствующий

Скрины
насчет авторизации не знаю.. можно проверить заголовок (как у меня на первом скрине) есть или нет. И логи в админке пишутся или нет на вкладке "Просмотр логов"
Dorimen 12 сентября 2017 в 22:47 0
no avatar
странно...

событие установлено:



в логах совершенно пусто... (
@SmartControl 12 сентября 2017 в 22:57 0
small user social cms
есть другой домен, чтобы проверить на нем? - я могу помочь, мне нужны для этого доступы к сайту.. так сложно сказать.
@SmartControl 12 сентября 2017 в 23:11 +2
small user social cms
отпишусь для всех - сайт посмотрел, дело оказалось в кэше. Стандартная ситуация - если что-то не работает, то сначала проверяйте события и обнуляйте кэш. А потом уже все остальное)
skewes 13 сентября 2017 в 09:11 0
small user social cms
Однозначно + !!!
Я вообще о таком не знал facepalm
Pocus 13 сентября 2017 в 10:25 +1
small user social cms
@SmartControl, спасибо.
Вопросы:

А что будет в браузерах, которые не поддерживают CSP?
Я конечно догадываюсь, что будет как было, т.е. все посторонние включения пройдут свободно. Но вдруг нюансы какие?

Можно ли каким-то образом разрешить включение стронних картинок и видео в фрейме, не перечисляя всех возможных источников?
@SmartControl 13 сентября 2017 в 11:50 0
small user social cms
Можно ли каким-то образом разрешить включение стронних картинок и видео в фрейме, не перечисляя всех возможных источников?
А можете пример подсказать где это используется? - я про вывод "стронних картинок и видео в фрейме". Компонент для инстанта, который так выводит или какой-то мини пример.
Pocus 13 сентября 2017 в 11:57 0
small user social cms
В html редакторе
@SmartControl 13 сентября 2017 в 11:25 0
small user social cms
А что будет в браузерах, которые не поддерживают CSP?
Не будет никаких действий. Просто этот заголовок браузер никак не обработает.
Вот я добавил свой придуманный заголовок - браузер его просто пропустил.
Заголовок, который браузер не поддерживает
Можно ли каким-то образом разрешить включение стронних картинок и видео в фрейме, не перечисляя всех возможных источников?
Я не вижу варианта "разрешить любые" - можно только заранее прописать домены. Но если так нужно, то можно придумать такой вариант - я могу добавить хук в компонент, который будет вызываться при формировании списка разрешенных доменов. И этот хук смогут перехватывать другие компоненты для добавления в список что-то свое. Но вот именно ключа "разрешить любые запросы" такого нет.

Есть еще мысль, попробую потестировать.
Pocus 13 сентября 2017 в 11:48 0
small user social cms
Но если так нужно, то можно ...... И этот хук смогут перехватывать другие компоненты
Да еще не осознал, нужно или нет.
Но вместо хука можно придумать плагин-расширение для html редактора. В других компонентах, думаю, это не нужно.