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

L
На сайте с 07.12.2007
Offline
351
#101
Babuta:
Метрика выдает такие заголовки:
. . . .
Переходы не прекратились, но их стало меньше. Сами переходы смотрю через статистику от Live Internet, "переходы на сайты".

Странно, что их стало меньше - ваш сайт не отдаёт заголовков CSP.

Зайдите на http://rexswain.com/httpview.html и введите в поле URL http://ya.ru, после нажатия на submit увидите:


Receiving Header:
HTTP/1.1·200·Ok(CR)(LF)
Server:·nginx(CR)(LF)
Date:·Sun,·07·Dec·2014·18:43:53·GMT(CR)(LF)
Content-Type:·text/html;·charset=UTF-8(CR)(LF)
Content-Length:·39180(CR)(LF)
Connection:·close(CR)(LF)
Cache-Control:·no-cache,no-store,max-age=0,must-revalidate(CR)(LF)
Expires:·Sun,·07·Dec·2014·18:43:53·GMT(CR)(LF)
Last-Modified:·Sun,·07·Dec·2014·18:43:53·GMT(CR)(LF)
Content-Security-Policy:·default-src·'self'·'unsafe-inline'·'unsafe-eval'·wss://portal-xiva.yandex.net·*.yandex.ru·yandex.ru·*.yandex.net·https://*.yandex.ru·https://yandex.ru·https://*.yandex.net·yandex.st·yastatic.net·*.yastatic.net·ws://portal-xiva.yandex.net·wss://portal-xiva.yandex.net;·img-src·data:·'self'·*.yandex.ru·*.tns-counter.ru·*.gemius.pl·https://*.yandex.ru·https://*.tns-counter.ru·https://*.gemius.pl·yandex.st·*.yandex.net·yastatic.net·*.yastatic.net;·report-uri·http://www.yandex.ru/log/csp?from=yaru.ru&showid=20925.8365.1417977833.06297&h=a1;(CR)(LF)
P3P:·policyref="/w3c/p3p.xml",·CP="NON·DSP·ADM·DEV·PSD·IVDo·OUR·IND·STP·PHY·PRE·NAV·UNI"(CR)(LF)
Set-Cookie:·yandexuid=6600941311417977833;·Expires=Wed,·04-Dec-2024·18:43:53·GMT;·Domain=.ya.ru;·Path=/(CR)(LF)
X-Frame-Options:·DENY(CR)(LF)
X-XRDS-Location:·http://openid.yandex.ru/server_xrds/(CR)(LF)

Видно, что ya.ru отдаёт CSP-заголовки

Babuta:
На сайте установлено:
Яндекс-Метрика, Google-Аналитика, счётчики, кнопки соцсетей, Adsense, видео с Youtube

Сегодня переделал настройку csp в .htaccess, взяв за основу сообщение Ladycharm, пост #95 данной темы.

CSP из того поста будет резать Google-Аналитику, счётчики и кнопки соцсетей. Её надо допилить под вас. Для этого надо знать какие именно счётчики(походу -Li.ru) используются, и какие кнопки соцсетей - share.js от Яндекса?

И, добиться, чтобы ваш сайт отдавал CSP-заголовки (смотреть их можно по rexswain.com выше). Тогда их можно будет довести до ума.

fake_user
На сайте с 24.02.2014
Offline
111
#102

Отдельное спасибо Ladycharm за ценную инфу в топике (и труды по чистке своей CSP для общего использования).

А вообще, всё равно ведь лезут. jquerys и musicalert-ы сошли на нет, а всякие новоявленные toolb.eu, obnovlenie.eu, sustema.eu проскакивают, пусть и очень небольшой процент (если сравнивать с тем, когда я о CSP не слышал, но наблюдал по полторы тыщи переходов на Websocial несколько месяцев назад).

C
На сайте с 07.05.2010
Offline
233
#103

На мой взгляд, рекламные сети должны уже официально информировать о настройках CSP для своего кода

L
На сайте с 07.12.2007
Offline
351
#104
ctit:
На мой взгляд, рекламные сети должны уже официально информировать о настройках CSP для своего кода

Ну, Яндекс - субботники по CSP устраивает, умный дядечка из Google (Adam Barth, редактор http://www.w3.org/TR/CSP/) на ютубе выступает с лекциями про CSP.

А на деле:

Ролики ютуба вставляются на сайт в iframe, и заголовки CSP для iframe должен отправлять youtube (это же другая страница с другого домена).

И ютуб не отправляет нужные заголовки CSP.

Объявления Адсенса - так же вставляются в iframe... и, естественно, Google не отправляет нужные заголовки CSP для адсенсовских ифреймов.

А мы не можем давать заголовки CSP для чужих ифреймов, поэтому содержимое iframe совершенно беззащитно. Яваскриптом там можно делать что угодно, кроме смены scr=''(которое мы имеем возможность контролировать по CSP).

Такое ощущение, что мужикиредакторы CSP из w3c - диванные теоретикисовершенно оторваны от реальности, и выдумывают правила CSP, которые на деле не позволяют ничем управлять.

Им бы дать лопаты в рукипо сайту каждому - пусть попробуют на практике применить то, что они уже 4-й год разрабатывают!

Уже исследования проводятся на тему почему провалился проект CSP?(осторожно, английский)

D
На сайте с 28.06.2008
Offline
1104
#105

Два раза за ноябрь/декабрь попадал под фильтр. Первый раз продлилось неделю, написал Платонам, они стандартно отписались что с сайтом все ок и он через неделю востановил трафик.

Но не долго песенка играла, прошло 2 недели и опять падение. Платоны 1 раз опять ответили что все ок, потом что проверят, на 2 письма вообще не ответили.

Левых переходов у меня было много, сегодня прописал вот что

<ifModule mod_headers.c>
Header set Content-Security-Policy "default-src 'self' script-src 'self' 'unsafe-inline' 'unsafe-eval' http://МОЙ САЙТ http://counter.rambler.ru my2.imgsmail.ru www.gstatic.com yandex.st an.yandex.ru pagead2.googlesyndication.com www.youtube.com vk.com cdn.connect.mail.ru *.gstatic.com mc.yandex.ru www.google-analytics.com https://www.google-analytics.com object-src 'self' www.gstatic.com style-src 'self' 'unsafe-inline' img-src 'self' data: 0.gravatar.com http://0.gravatar.com/ 1.gravatar.com http://1.gravatar.com/ an.yandex.ru/count http://an.yandex.ru/count/ favicon.yandex.net http://favicon.yandex.net avatars-fast.yandex.net http://avatars-fast.yandex.net/ vk.com yastatic.net counter.rambler.ru top-fwz1.mail.ru www.liveinternet.ru counter.yadro.ru mc.yandex.ru www.google-analytics.com https://www.google-analytics.com media-src 'self' frame-src 'self' yastatic.net http://yastatic.net/ connect.mail.ru an.yandex.ru www.youtube.com googleads.g.doubleclick.net vk.com userapi.com site.yandex.net yastatic.net https://yastatic.net http://site.yandex.net https://site.yandex.net *.gstatic.com https://vk.com font-src 'self' fonts.googleapis.com connect-src 'self' mc.yandex.ru *.gstatic.com"
</IfModule>

работает реклама гугла, ЛИ, метриа, все соц кнопки и виджеты ВК.

левые переходы прекратились.

CTR и Доход с гугла немного подрос, по сравнению со вчерашним днем. Наблюдаю дальше, надеюсь поможет.

png 3Gcz60.png
jpg 101010.jpg
png 3KJ-lO.png
L
На сайте с 07.12.2007
Offline
351
#106
Dram:
работает реклама гугла, ЛИ, метриа, все соц кнопки и виджеты ВК.

соц кнопки от кого? Яндексовский share.js или mail.ru-шные? РСЯ/Директа на сайте нет?

Вообще, "Списывать - не хорошо", а "списывать CSP" - надо с умом и только из правильного источника.

1). Вот вы открыли my2.imgsmail.ru в директиве script-stc, а это CDN mail.ru, с него грузятся не только скрипты, но и картинки.

И у этого CDN - много серверов: my1.imgsmail.ru, my3.imgsmail.ru, ..., my10.imgsmail.ru, а вы открыли только один из них.

Например, иконка доступна на всех серверах:
http://my8.imgsmail.ru/mail/ru/images/my/compass/static/login/bg_container.png
http://my3.imgsmail.ru/mail/ru/images/my/compass/static/login/bg_container.png
http://my5.imgsmail.ru/mail/ru/images/my/compass/static/login/bg_container.png

2). Ваша CSP ничего не блокирует, никакие "гобонго" и тп, потому, что у неё некорректный синтаксис.

Директивы script-src/img-src/connect-src/... должны отделяться друг от друга ; (SEMICOLON). Вот кусок вашей CSP:

... font-src 'self' fonts.googleapis.com connect-src 'self' mc.yandex.ru *.gstatic.com

а вот как он должен выглядеть:

... font-src 'self' fonts.googleapis.com; connect-src 'self' mc.yandex.ru *.gstatic.com

PS: И это - к счастью для вас, что CSP ничего не блокирует - с такой CSP вы бы сразу не досчитались дохода на Адсенсе.

D
На сайте с 28.06.2008
Offline
1104
#107
Ladycharm:
Ваша CSP ничего не блокирует, никакие "гобонго" и тп, потому, что у неё некорректный синтаксис.

Судят по статистике LI все работало, левые переходы прекратились, но все равно спасибо, ошибку исправил.

РСЯ/Директа нет, кнопки работают Яндексовские share.js

C
На сайте с 07.05.2010
Offline
233
#108

К вопросу о нестандартных заголовках original-uri.

Все отчеты ими просто забиты. Причем блокировка идет из AdSense и рекламной сети adriver.

Блокируются локальные адреса, типа blocked-uri:http://192.168.65.31.

Чувствую, теряю деньги...

P.S. Разобрался. Блокируются даже из собственных локальных js.

Браузер преимущественно Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Firefox/24.0

K
На сайте с 28.12.2014
Offline
0
#109
Ladycharm:

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

Это не совсем так - именно для этого и придуман атрибут sandbox в таге iframe. Он ограничивает возможности ифрейма и создан именно для ограничения риска со стороны чужого кода.

AlexGRR
На сайте с 23.12.2011
Offline
54
#110

Обрыл всю тему, но - или пропустил, или нет ответа.

А как узнать, какую из политик нарушает тот или иной урл?

Например, Гугл нарушает политику script-src, style-src и другие. А вот как узнать, какие именно?

P. S. C этим разобрался - нужно смотреть violated-directive в отчете.

Вот только она не выводиться для кода

header("HTTP/1.0 204 No Response");


$data = file_get_contents('php://input');
if ($data = json_decode($data))
{
$data=stripslashes(json_encode($data));
if (spam($data)==0)
{
preg_match('#"blocked-uri":"(.*)",#isU',$data,$url);
if ($url[1])
{
preg_match('#"violated-directive":"(.*)",#isU',$data,$url1);
$var_array = explode('/',$url[1]);
if ($var_array[2])file_put_contents($_SERVER['DOCUMENT_ROOT'].'/path/csp/'.$var_array[2], $url1[1].':'.$_SERVER['HTTP_USER_AGENT'].':'.$_SERVER['REMOTE_ADDR']."\n\r\n", FILE_APPEND | LOCK_EX);
else file_put_contents($_SERVER['DOCUMENT_ROOT'].'/path/csp/'.date("H").'-csp-report.txt', $data.'======='.$_SERVER['HTTP_USER_AGENT'].'============'.$_SERVER['REMOTE_ADDR']."\n\r\n", FILE_APPEND | LOCK_EX);
}
else file_put_contents($_SERVER['DOCUMENT_ROOT'].'/path/csp/'.date("H").'-csp-report.txt', $data.'======='.$_SERVER['HTTP_USER_AGENT'].'============'.$_SERVER['REMOTE_ADDR']."\n\r\n", FILE_APPEND | LOCK_EX);
}
}

Не работает секция

preg_match('#"violated-directive":"(.*)",#isU',$data,$url); 
На заметку: сколько можно зарабатывать на партнерках (http://avtoforex.ru/affiliate-program/439-skolko-mozhno-zarabotat-na-partnerkah-foreks.html)?

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