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

C
На сайте с 30.03.2015
Offline
7
#851

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

Отличная и необходимая тема CSP!

Почитав, составил свои правила для nginx.

Из того, что использую: Сайт работает по HTTPS, стоят Yandex.Metrika counter, Google Analytics, LiveInternet counter, Rating@Mail.ru counter и Google AdSense, ролик Yotube.

Вот мой код:


add_header Content-Security-Policy "
default-src 'self' *.mysyte.ru mysyte.ru;

script-src 'self' 'unsafe-inline' 'unsafe-eval' *.mysyte.ru mysyte.ru
http://yandex.ru
*.digiseller.ru https://graph.digiseller.ru
http://*.yandex.ru
http://mc.yandex.ru
https://mc.yandex.ru
http://awaps.yandex.ru
http://yandex.st
http://*.yandex.st
https://yandex.st
https://*.yandex.st
http://yandex.net
http://*.yandex.net
http://*.google-analytics.com
https://*.google-analytics.com
http://*.googlesyndication.com
https://*.googlesyndication.com
http://*.doubleclick.net
https://*.doubleclick.net
http://*.gstatic.com
https://*.gstatic.com
http://*.googleapis.com
https://*.googleapis.com
http://*.google.com
https://*.google.com
http://top-fwz1.mail.ru

frame-src 'self' *.mysyte.ru mysyte.ru
*.digiseller.ru https://graph.digiseller.ru
http://mc.yandex.ru
https://mc.yandex.ru
http://awaps.yandex.ru
http://*.doubleclick.net
https://*.doubleclick.net
http://*.googleadservices.com
https://*.googleadservices.com
http://*.googlesyndication.com
https://*.googlesyndication.com
http://*.google.com
https://*.google.com
http://*.youtube.com
https://*.youtube.com;

object-src 'self' *.mysyte.ru mysyte.ru
*.digiseller.ru https://graph.digiseller.ru
http://*.doubleclick.net
https://*.doubleclick.net
http://*.gstatic.com
https://*.gstatic.com
http://*.googlesyndication.com
https://*.googlesyndication.com
http://*.youtube.ru
https://*.youtube.ru
http://*.youtube.com
https://*.youtube.com;

style-src 'self' 'unsafe-inline' *.mysyte.ru mysyte.ru
http://*.googleapis.com
https://*.googleapis.com
http://*.gstatic.com
https://*.gstatic.com;

img-src * data:;
media-src *;
font-src * data: *.mysyte.ru mysyte.ru
http://*.googleapis.com
https://*.googleapis.com
http://*.gstatic.com
https://*.gstatic.com;

connect-src 'self' *.mysyte.ru mysyte.ru
*.digiseller.ru https://graph.digiseller.ru
https://translate.googleapis.com
https://pipe.skype.com
http://*.google-analytics.com
https://*.google-analytics.com
https://*.yandex.ru
http://*.youtube.com
https://*.youtube.com
http://googlevideo.com
http://*.googlevideo.com
https://googlevideo.com
https://*.googlevideo.com;

report-uri https://mysyte.ru/csp.php";

Если возможно, прошу проверить на правильность. Может чего не учел?

Заранее благодарен!

C
На сайте с 30.03.2015
Offline
7
#852

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

Отличная и необходимая тема CSP!

Почитав, составил свои правила для nginx.

Из того, что использую: Сайт работает по HTTPS, стоят Yandex.Metrika counter, Google Analytics, LiveInternet counter, Rating@Mail.ru counter и Google AdSense, ролик Yotube.

Вот мой код:


add_header Content-Security-Policy "
default-src 'self' *.mysyte.ru mysyte.ru;

script-src 'self' 'unsafe-inline' 'unsafe-eval' *.mysyte.ru mysyte.ru
http://yandex.ru
*.digiseller.ru https://graph.digiseller.ru
http://*.yandex.ru
http://mc.yandex.ru
https://mc.yandex.ru
http://awaps.yandex.ru
http://yandex.st
http://*.yandex.st
https://yandex.st
https://*.yandex.st
http://yandex.net
http://*.yandex.net
http://*.google-analytics.com
https://*.google-analytics.com
http://*.googlesyndication.com
https://*.googlesyndication.com
http://*.doubleclick.net
https://*.doubleclick.net
http://*.gstatic.com
https://*.gstatic.com
http://*.googleapis.com
https://*.googleapis.com
http://*.google.com
https://*.google.com
http://top-fwz1.mail.ru

frame-src 'self' *.mysyte.ru mysyte.ru
*.digiseller.ru https://graph.digiseller.ru
http://mc.yandex.ru
https://mc.yandex.ru
http://awaps.yandex.ru
http://*.doubleclick.net
https://*.doubleclick.net
http://*.googleadservices.com
https://*.googleadservices.com
http://*.googlesyndication.com
https://*.googlesyndication.com
http://*.google.com
https://*.google.com
http://*.youtube.com
https://*.youtube.com;

object-src 'self' *.mysyte.ru mysyte.ru
*.digiseller.ru https://graph.digiseller.ru
http://*.doubleclick.net
https://*.doubleclick.net
http://*.gstatic.com
https://*.gstatic.com
http://*.googlesyndication.com
https://*.googlesyndication.com
http://*.youtube.ru
https://*.youtube.ru
http://*.youtube.com
https://*.youtube.com;

style-src 'self' 'unsafe-inline' *.mysyte.ru mysyte.ru
http://*.googleapis.com
https://*.googleapis.com
http://*.gstatic.com
https://*.gstatic.com;

img-src * data:;
media-src *;
font-src * data: *.mysyte.ru mysyte.ru
http://*.googleapis.com
https://*.googleapis.com
http://*.gstatic.com
https://*.gstatic.com;

connect-src 'self' *.mysyte.ru mysyte.ru
*.digiseller.ru https://graph.digiseller.ru
https://translate.googleapis.com
https://pipe.skype.com
http://*.google-analytics.com
https://*.google-analytics.com
https://*.yandex.ru
http://*.youtube.com
https://*.youtube.com
http://googlevideo.com
http://*.googlevideo.com
https://googlevideo.com
https://*.googlevideo.com;

report-uri https://mysyte.ru/csp.php";

Если возможно, прошу проверить на правильность. Может чего не учел?

Заранее благодарен!

T
На сайте с 07.03.2016
Offline
0
#853

Добрый день!

Изучаем возможность использования заголовков content-security-policy на своем проекте. В связи с этим хотелось бы посмотреть, как это реализовано у других. Проблема в том, что мне пока не удалось найти реальные сайты, где бы использовались одновременно заголовки content-security-policy ("боевые", а не -report-only) и AdSense (у нас используется AdSense). Если кто-то знает такие сайты, пожалуйста, поделитесь ссылкой.

И еще один вопрос. Существуют ли варианты не использовать script-src 'unsafe-inline' 'unsafe-eval' при наличии на сайте AdSense?

Заранее спасибо.

C
На сайте с 30.03.2015
Offline
7
#854

Проблема с отчетом - не отчитывается...

Использовал содержимое файла с одного из постов, скобки заменил на квадратные.

Файл назвал csp.php и папку csp, права на запись и исполнение дал. Стоит php 5.

Может пожалуйста кто поделиться рабочим отчетом?

thurman,

Уже использую (со вчера), клики считаются, правда, как написал выше, нет отчетов.

не уверен, что не забанят после публикации ссылки на сторонний ресурс, а так бы показал. Сайт работает через https и благодаря CSP рейтинг A+.

T
На сайте с 07.03.2016
Offline
0
#855

Chiter, покажите содержимое csp.php, может, подскажу что не так. Самое первое - при переходе по адресу https://mysyte.ru/csp.php файл csp.php отрабатывает?

C
На сайте с 30.03.2015
Offline
7
#856

thurman,

<?php 
/*function spam($data)
{
$mas[]=Array(); //список для игнора 'bad_url_1', 'bad_url_2', 'bad_url_3'...

$kol=count($mas);
$result=0;
for ($i=0; $i<$kol; $i++)
{
if ( ($mas[$i])&&(strpos($data,$mas[$i])) ) $i=$kol;
}
return $result;
}
*/
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) //это если шнягу фильтровать - а так не надо
#{
if(!is_dir($_SERVER['DOCUMENT_ROOT'].'/hernyaot4et/'.date("dmY"))) mkdir($_SERVER['DOCUMENT_ROOT'].'/hernyaot4et/'.date("dmY"), 0777);
else
{
$data_z = $data;
$data_z = str_replace("{","",$data_z);
$data_z = str_replace("}","",$data_z);
list($hello, $body) = explode("csp-report", $data_z);
list($document_uri, $referrer, $violated_directive, $original_policy, $blocked_uri, $source_file, $line_number, $column_number, $status_code) = explode(",", $body);
$print_data = "csp-report:\n----------------------------------------\n".$document_uri."\n".$referrer."\n".$violated_directive."\n".$blocked_uri."\n".$source_file."\n".$line_number."\n".$column_number."\n".$status_code."\n";
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'].'/hernyaot4et/'.date("dmY").'/'.$var_array[2], 'violated-directive: '.$url1[1]."\nUSER_AGENT: ".$_SERVER['HTTP_USER_AGENT']."\nIP: ".$_SERVER['REMOTE_ADDR']."\n\r#---------------------------------------------------------------~\n", FILE_APPEND | LOCK_EX);
else file_put_contents($_SERVER['DOCUMENT_ROOT'].'/hernyaot4et/'.date("dmY").'/'.date("H").'-csp-report.txt', $print_data."\n".$_SERVER['HTTP_USER_AGENT']."\n".$_SERVER['REMOTE_ADDR']."\n----------------------------------------\n", FILE_APPEND | LOCK_EX);


}
else
{

file_put_contents($_SERVER['DOCUMENT_ROOT'].'/hernyaot4et/'.date("dmY").'/'.date("H").'-csp-report.txt', $print_data."\n".$_SERVER['HTTP_USER_AGENT']."\n".$_SERVER['REMOTE_ADDR']."\n----------------------------------------\n", FILE_APPEND | LOCK_EX);

}
}
#}
}

?>

а при попытке открытия файла в опере вот что выдает:

Ошибка сервера

Возникла ошибка сайта при загрузке https://сайт.com/hernyaot4et.php. Возможно, сайт закрыт на техническое обслуживание или неверно сконфигурирован.
T
На сайте с 07.03.2016
Offline
0
#857

Chiter, этот код нерабочий. Вот основное в этом файле:

<?php 

header("HTTP/1.0 204 No Response");
$data = file_get_contents('php://input');
if ($data = json_decode($data))
{
//Здесь в $data находится объект с отчетом - его нужно куда-то сохранить
}
C
На сайте с 30.03.2015
Offline
7
#858
thurman:
Chiter, этот код нерабочий. Вот основное в этом файле:
<?php 
header("HTTP/1.0 204 No Response");
$data = file_get_contents('php://input');
if ($data = json_decode($data))
{
//Здесь в $data находится объект с отчетом - его нужно куда-то сохранить
}


thurman
,

Спасибо большое, но все равно не получается. С php вообще не знаком.

В этом файле написал так:

<?php  
header("HTTP/1.0 204 No Response");
$data = file_get_contents('php://input');
if ($data = json_decode($data))
{
//Здесь в $data находится объект с отчетом - его нужно куда-то сохранить
}
?>

и так же папку назвал "hernyaot4et", но все равно при открытии файла в браузере

Ошибка сервера

Возникла ошибка сайта при загрузке https://сайт.com/hernyaot4et.php. Возможно, сайт закрыт на техническое обслуживание или неверно сконфигурирован.
T
На сайте с 07.03.2016
Offline
0
#859

Chiter, нужно обратиться к специалисту, чтобы написал код, который будет сохранять отчет. Пока что php-код нерабочий.

C
На сайте с 30.03.2015
Offline
7
#860

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

А на том сайте, что мы обсуждали, видимо что-то препятствует исполнению файла отчета.

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