Настройка CSP - Content Security Policy

-
На сайте с 15.12.2010
Offline
133
#811

После некоторых размышлений и просмотра исходного кода сайта, объяснить почему Сафари ругался на скрипт с гугля могу только одним способом.

Гуглопоиск для сайта требует установки скрипта:

http://www.google.com/coop/cse/brand?form=cse-search-box&lang=en

в CSP я его добавил как:

 script-src ... www.google.com/coop/cse/...

По всей видимости, Сафари туго обрабатывает CSP для директорий. К сожалению, гугл не помог, официальных(и не официальных) источников, как обрабатывает Сафари CSP, я найти не смог.

UPD Хотя есть еще одна версия у меня. Имеется форма для этого поиска с

action="http://www.google.com"
Возможно сафари проверяет валидность урла...

Конфликт происходил у всех пользователей сафари, в общем других объяснений у меня нет. В итоге заменил директорию на домен гугля.

Если кому интересно. Конечная настройка CSP для моего сайта на сегодня выглядит так

(Nginx, установлены Adsense+GAnalitics+Пользовательский поиск Гугла):

add_header Content-Security-Policy "
default-src 'self' *.mywebsite.com;
img-src 'self' *.mywebsite.com www.google-analytics.com https://www.google.com/cse/static/en/ https://stats.g.doubleclick.net pagead2.googlesyndication.com https://pagead2.googlesyndication.com www.gstatic.com https://www.gstatic.com https://googleads.g.doubleclick.net googleads.g.doubleclick.net;
script-src 'self' 'unsafe-inline' *.mywebsite.com www.google-analytics.com pagead2.googlesyndication.com https://pagead2.googlesyndication.com https://cse.google.com www.google.com;
style-src 'self' 'unsafe-inline' *.mywebsite.com fonts.googleapis.com https://fonts.googleapis.com;
font-src 'self' *.mywebsite.com themes.googleusercontent.com https://themes.googleusercontent.com fonts.gstatic.com https://fonts.gstatic.com;
frame-src 'self' *.mywebsite.com https://googleads.g.doubleclick.net googleads.g.doubleclick.net;
connect-src 'self' *.mywebsite.com;
object-src 'self' pagead2.googlesyndication.com https://pagead2.googlesyndication.com;
report-uri http://www.mywebsite.com/csp.php;";

Разделители строки добавлены для удобства восприятия, их необходимо убирать.

К сожалению, от unsafe-inline пока отказаться не могу, возможно в будущем, все же избавлюсь и от него.

PS Касательно unsafe-inline и выноса кода адсенс в отдельный файл, нашел ответ от сотрудника гугла, что это делать все-таки не запрещено.

Joker-jar
На сайте с 26.08.2010
Offline
171
#812

Кстати, возможно и было, но, может, кому-то будет полезным. Есть неплохой инструмент для "отладки" CSP - https://report-uri.io После регистрации дают индивидуальный URL для report-uri, куда будут лететь отчеты о блокировках. На сервисе можно смотреть, что у клиентов блокируется вашими правилами CSP.

korfiati
На сайте с 27.08.2013
Offline
50
#813

Может кто сталкивался.

Регулярно блокируется, как вижу в рапорте img-src clckto.ru

Что это, есть у кого знание?

С мобильного есть вот такой ресурс - front.facetz.net, как я поняла, анализ действий пользователей.

Как научиться шить самой и строить выкройки Школа Шитья Анастасии Корфиати ( https://korfiati.ru/ )
K
На сайте с 08.02.2016
Offline
6
#814

Здравствуйте!

А если у меня на сайте только статичные страницы, я могу подключить CSP только через .htaccess?

K
На сайте с 08.02.2016
Offline
6
#815

Ladycharm, можно Вам, как эксперту, задать несколько вопросов:

1. yadro.ru, doubleclick.net, - добавить или не надо?

2. self означает имясайта, то есть заменяет название домена и его можно не писать, или же надо писать имясайта в каждом правиле?

3. надо ли писать *.имясайта, если у меня нет поддоменов или это включает www?

3.1 *. google-analytics. com включает www. google-analytics. com и как лучше прописывать?

4. всегда надо добавлять https, если в Хроме показывает http и наоборот?

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

6. На сайте report-uri. io в разделе анализа у многих позици выводит, пример: http://*. googleapis. com (consider removing the wildcard). Что это означает?

7. Может быть не в тему, но интересно тоже вот это сообщение 'webkitMovementX' is deprecated. Please use 'movementX' instead.

Ниже прикладываю код, который получился, альфа-версия. На сайте нет рекламы, только Addthis, счетчики LI, mail, rambler, google analitics, и группы vk, ok, fb, g+. Сайт: http://ohotnik-kolomna.ru

<ifModule mod_headers.c>

Header set Content-Security-Policy-Report-Only:
"default-src 'self' http://ohotnik-kolomna.ru ;

script-src 'self' 'unsafe-inline' 'unsafe-eval' http://*.googleapis.com https://*.googleapis.com http://vk.com https://vk.com http://*.google-analytics.com https://*.google-analytics.com http://*.mail.ru https://*.mail.ru http://*.facebook.net https://*.facebook.net http://*.facebook.com https://*.facebook.com http://*.addthis.com https://*.addthis.com http://*.ok.ru https://*.ok.ru http://*.top100.ru https://*.top100.ru http://*.delicious.com https://*.delicious.com https://*.google.com http://*.google.com ; style-src 'self' 'unsafe-inline' ;

img-src 'self' data: http://*.yadro.ru http://vk.com http://*.mail.ru http://*.google-analytics.com https://*.google-analytics.com https://*.doubleclick.net http://*.doubleclick.net https://*.facebook.com http://*.facebook.com http://*.rambler.ru https://counter.rambler.ru http://*.mail.ru https://*.mail.ru http://*.addthis.com https://*.addthis.com ;

font-src 'self'; media-src 'self'; frame-src 'self' http://vk.com https://vk.com http://*.facebook.com https://*.facebook.com https://*.ok.ru http://*.ok.ru http://*.addthis.com https://*.addthis.com https://*.google.com http://*.google.com ;

report-uri https://report-uri.io/report/902149f45b2c02508d9587ab45c98de3/reportOnly ; "

</IfModule>

Буду рад критике.

P.S.

Проверил на старой Мозиле с Firebug

Еще просятся

http://metrext.com,  http://dmp.adriverssp.com, http://mc.yandex.ru, http://b.mxpnl.net/,  https://cr-input.mxpnl.net

Что с ними делать?

L
На сайте с 07.12.2007
Offline
351
#816
kohotnik:
Ladycharm, можно Вам, как эксперту, задать несколько вопросов:
1. yadro.ru, doubleclick.net, - добавить или не надо?

yadro.ru - это счётчик li.ru, если вы использует его или хотите чтобы статистика сливалась конкурентам - открывайте.

doubleclick.net - универсальная платформа показа рекламы, через которую работают многие рекламные сети в том числе и Adsense, открывать или нет - зависит от рекламных сетей на сайте

kohotnik:
2. self означает имясайта, то есть заменяет название домена и его можно не писать, или же надо писать имясайта в каждом правиле?

self означает имясайта/поддомена "как на него зашли", то есть с www или без соответственно.

Писать его в каждом правиле или нет зависит от вас, но:

- некоторые старые Safari его не понимали

- использование self позволяет вставить скрипты от "имени вашего сайта", чем пользуется Антибанер Касперского. Я стараюсь не использовать self, но для этого надо адаптировать сайт соответствующим образом.

kohotnik:
3. надо ли писать *.имясайта, если у меня нет поддоменов или это включает www?

Да, это включает www - это такой же поддомен. Поскольку имясайта - это самый доверенный источник(ваш же домен) - открывайте *.имясайта и не грейте голову.

Правда, есть ньюансы "80 левела" по использованию именисайта в CSP (они не для паблика), но это, так же как self, требует специальной адаптации сайта.

kohotnik:
3.1 *. google-analytics. com включает www. google-analytics. com и как лучше прописывать?

Включает, см. п 3), но поддомены с чужих доменов лучше указывать явно. Например, полностью открыв *.yandex.ru вы можете открыть публичные поддомены яндекса на которых пользователи могут размещать свой контент, в том числе и вредоносные скрипты.

kohotnik:
4. всегда надо добавлять https, если в Хроме показывает http и наоборот?

Всегда. Если скрипт не ваш, вы не знаете по какому протоколу станет вызываться этот скрипт завтра, когда в нём что-то поменяется. Лучше подстелить соломки заранее.

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

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

kohotnik:
6. На сайте report-uri. io в разделе анализа у многих позици выводит, пример: http://*. googleapis. com (consider removing the wildcard). Что это означает?

Это вопрос к автору report-uri.io, это его детище.

kohotnik:
7. Может быть не в тему, но интересно тоже вот это сообщение 'webkitMovementX' is deprecated. Please use 'movementX' instead.

Это не относится к CSP, просто в движке Хрома устарел компонент работы с видео.

kohotnik:
Проверил на старой Мозиле с Firebug
Еще просятся
http://metrext.com,  http://dmp.adriverssp.com, http://mc.yandex.ru, http://b.mxpnl.net/,  https://cr-input.mxpnl.net

Что с ними делать?

metrext.com - сбор аналитики работы расширений Хрома и FF, dmp.adriverssp.com - сбор данных о пользователях с целью:

- использования в аукционах RTB для таргетинга рекламы

- продажи информации третьим лицам.

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

p.s чтобы покритиковать вашу CSP ее надо практически написать "с нуля" и сравнить с вашей :).

K
На сайте с 08.02.2016
Offline
6
#817

Ladycharm, я бы Вас расцеловал, огромное Вам спасибо за столь подробные ответы.:)

Чем больше узнаешь, тем больше вопросов у тебя возникает:

1. Я так понял, что надо закрывать все те сайты сборы статистики, которые не используешь?

Рекламы на сайте никакой нет, следовательно можно закрыть все рекламные сборщики статистики? Хотя яндексу, наверное, стоит открыть?

2. Если правильно понял, вместо self лучше прописать имясайта или требуются более изощренные методы (типа указания портов)?

3. Можно ли как-то дать понять браузеру, что я обновил CSP, а то в FF показывается старая политика?

4. CSP не мешает работе роботам ПС, если она неправильно настроена?

5. Надо ли использовать вместе с Content-Security-Policy использовать X-Content-Security-Policy и X-WebKit-CSP?

Почитал про unsafe-inline. Раньше даже не подозревал, какая это зараза - инлайн скрипты.

AK
На сайте с 22.03.2007
Offline
70
#818

Кажется Яндекс.Браузер игнорирует CSP для своих адресов. В последнее время стал вылазить Яндекс.Советник, хотя его адрес не разрешен.

S
На сайте с 02.05.2014
Offline
61
#819
AlexeyKa:
Кажется Яндекс.Браузер игнорирует CSP для своих адресов

Похоже на то, поставил новый я.б. и теперь вылезает советник.

При том, что для теста я запретил все кроме своего домена.

ps

в принципе ожидаемое поведение от яндекса

D.iK.iJ
На сайте с 26.05.2013
Offline
239
#820
Sujcnm:
Похоже на то, поставил новый я.б. и теперь вылезает советник.
При том, что для теста я запретил все кроме своего домена.

ps
в принципе ожидаемое поведение от яндекса

Вообще, Яндекс Браузер - это как бы Хром (Хромиум). А Хром позволяет делать исклчения для установленных Дополнений. Он там точно не ставится по умолчанию?

Адаптивный дизайн в 2 строчки ( https://dikij.com/wm/adaptaciya-saytov.php ). + Принимаю заказы любой сложности ( https://searchengines.guru/ru/forum/926323 ). 💎 Еще я делаю классные кулоны с опалами ( https://mosaicopal.ru/ ).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий