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

Webliberty
На сайте с 30.10.2010
Offline
130
#81
ctit:
$mas[]=Array(список для игнора);

А список в каком формате писать? Через запятую или пробел? Приведите пожалуйста конкретный пример в адресами, например так:

$mas[]=Array(site.com site.com);

или так:

$mas[]=Array(site.com, site.com);

И если на поддоменах, то их отдельно прописывать или по маске *.site.com?

https://webliberty.ru | Подпись заверена нотариусом ©️
C
На сайте с 07.05.2010
Offline
227
#82
webliberty:
А список в каком формате писать? Через запятую или пробел? Приведите пожалуйста конкретный пример в адресами, например так:
И если на поддоменах, то их отдельно прописывать или по маске *.site.com?

$mas[]=Array('site.com','site1.com');

Для поддоменов нужно прописывать только основной домен.

$mas[]=Array('site.com','site2.com');
Webliberty
На сайте с 30.10.2010
Offline
130
#83

Большое спасибо! А то не будучи программистом сложно разобраться без примеров)

F
На сайте с 01.07.2009
Offline
79
#84

Если кому-то интересно записывать в файл только УРЛ заблокированных сайтов, без полного отчёта, можно прописать следующий код:


preg_match('#"blocked-uri":"(.*)",#isU',$data,$url);

$data=stripslashes($url[1]);

Вставить его нужно после строки:


$data = json_encode($data)."\n\r";
C
На сайте с 07.05.2010
Offline
227
#85

По поводу original-uri.

Отдает такой ответ

Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0

Т.е. нормальный браузер.

На форуме мозилы (2010 год) написано, что через original-uri, возможно передавать url, если пользователь идет через прокси. В принципе так оно и есть - пользователи идут через прокси университета.

L
На сайте с 07.12.2007
Offline
351
#86
ctit:
По поводу original-uri.

Отдает такой ответ
Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0

Т.е. нормальный браузер.
На форуме мозилы (2010 год) написано,....

Если внимательно посмотреть на описание самого первого стандарта Content Security Policy 1.0, там стоят даты Copyright © 2010-2012

Или у Мозиллы - дар предвидения, или информация об original-uri на форуме мозилы от 2010 года не имеет отношения к CSP, который вышел в тираж только в 2012 году.

Webliberty
На сайте с 30.10.2010
Offline
130
#87
fiper:
Если кому-то интересно записывать в файл только УРЛ заблокированных сайтов, без полного отчёта, можно прописать следующий код:

В идеале конечно лучше бы получать в отчете такие данные:

- в какой секции заблокировано (скрипт, фрейм, картинка и т.д.)

- на какой странице заблокировано

- какой сайт заблокирован

Один УРЛ особо ни о чем не скажет, а пихать его во все секции если блокируется ошибочно - не верное решение.

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

У искал как это получше оформить - нашел вариант на гитхабе - оформляется в виде таблице, но хранится все в БД и нужно настроить сервер специальным образом, а на виртуальном хостинге например такое не сделать.

C
На сайте с 07.05.2010
Offline
227
#88
webliberty:
В идеале конечно лучше бы получать в отчете такие данные:
- в какой секции заблокировано (скрипт, фрейм, картинка и т.д.)
- на какой странице заблокировано
- какой сайт заблокирован

В какой секции заблокировано:

preg_match('#"violated-directive":"(.*)",#isU',$data,$url);

На какой странице заблокировано

preg_match('#"document-uri":"(.*)",#isU',$data,$url);

Какой сайт заблокирован

preg_match('#"blocked-uri":"(.*)",#isU',$data,$url);

Сделал у себя статистику по блокируемым ресурсам - сразу видно, какой сайт всех больше блокируется (по объему файла).


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);
}
}
FL
На сайте с 18.10.2008
Offline
81
#89

Допустим есть сайт, без внешних скриптов и картинок, только закладки от яши и 2 счетчика: метрика и ли, и возможно видео с youtube

Правильно ли составлен этот CSP для htaccess?:

<ifModule mod_headers.c>


Header set Content-Security-Policy: "default-src 'none';
script-src 'self' mysite.com yandex.st mc.yandex.ru counter.yadro.ru;
object-src 'self' mysite.com;
style-src 'self' mysite.com;
img-src 'self' mysite.com;
media-src 'none';
frame-src 'self' youtube.com;
font-src 'none';
connect-src 'none'"

Header set X-Content-Security-Policy: "default-src 'none';
script-src 'self' mysite.com yandex.st mc.yandex.ru counter.yadro.ru;
object-src 'self' mysite.com;
style-src 'self' mysite.com;
img-src 'self' mysite.com;
media-src 'none';
frame-src 'self' youtube.com;
font-src 'none';
connect-src 'none'"

Header set X-WebKit-CSP: "default-src 'none';
script-src 'self' mysite.com yandex.st mc.yandex.ru counter.yadro.ru;
object-src 'self' mysite.com;
style-src 'self' mysite.com;
img-src 'self' mysite.com;
media-src 'none';
frame-src 'self' youtube.com;
font-src 'none';
connect-src 'none'"

</IfModule>

собрано на cspisawesome.com

L
На сайте с 07.12.2007
Offline
351
#90
FiLiNDAV:
Допустим есть сайт, без внешних скриптов и картинок, только закладки от яши и 2 счетчика: метрика и ли, и возможно видео с youtube

Правильно ли составлен этот CSP для htaccess?:

Нет. Проверяется - достаточно просто:

Ставишь заголовок Content-Security-Policy-Report-Only, добавляешь в конце report-uri, по которому пишешь все отчёты в файл. В нём потом смотришь, режется ли что-то нужное.

Если ничо "нужное" не режется - убираешь хвостик "-Report-Only" и радуешься жизни.

Про X-Content-Security-Policy и X-WebKit-CSP можешь забыть, смысла в них уже нет.

PS: Правда, проскакивала информация, что X-Content-Security-Policy поддерживает IE10+, но мне такие браузеры в отчётах CSP не встречались.

Или счастливые обладатели IE10+ не ставят в него "левые" плагины, или IE10+ их сам отторгает :)

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