- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Видел уже кучу гадости на https. Бесплатные сертификаты раздаются направо и налево. Поэтому httpS не панацея.
Сообщение от Vodoleev Посмотреть сообщение
Еще создаются www.google-analytics.com с пустой violated-directive:
Это нормально? Или я что-то не так делаю?
В общем, такие глюки бывают, поскольку на сегодня ещё не все браузеры корректно поддерживают CSP.
Для однозначного ответа надо смотреть как часто это проявляется и на каких ЮзерАгентах.
Сообщение от Thanx Посмотреть сообщение
Не пишите http://. А https:// - нужно писать.
Да, так надо указывать по стандарту CSP, а как делает Vodoleev: http://*.google-analytics.com https://*.google-analytics.com - это "по-жизни".
Дело в том, что мобильный Safari имеет баг в реализации CSP и не понимает домен, если протокол не указан в явном виде.
Поэтому у Vodoleev-а в отчётах не будет ошибок от мобильного Сафари.
Есть ругань на домены Гугл аналитикс, на домены и поддомены своего сайта и на др указанные в конфиге CSP домены. Юзер агент - Google bot или браузер из iphone (разные).
Кстати, для домена www.tns-counter.ru (откуда он подцепляется, кстати?) такие же юзерагенты:
USER_AGENT: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
USER_AGENT: Mozilla/5.0 (iPad; CPU OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Coast/4.40.93868 Mobile/12H143 Safari/7534.48.3
В основном только с этими юзерагентами все записи... По ВСЕМ вылавливаемым доменам - только такие преимущественно юзерагенты. Что это значит? На сайт ходят десятки тысяч в день, а в отчетах CSP только эти юзерагенты. И вообще в отчете несколько десятков файлов за сутки, почти все эти домены из отчета указаны в CSP как разрешенные, но они есть в отчете с указанными выше юзерагентами. Каждый файл имеет по 3-5-10 записей обычно за сутки.
Есть ругань на домены Гугл аналитикс, на домены и поддомены своего сайта и на др указанные в конфиге CSP домены. Юзер агент - Google bot или браузер из iphone (разные).
Google bot некорректно поддерживает CSP, хотя занимательно, что робот-индексатор вообще её поддерживает.
У Ipad/Iphone тоже есть свои глюки с CSP.
Кстати, для домена www.tns-counter.ru (откуда он подцепляется, кстати?) такие же юзерагенты:
tns-counter.ru сотрудничает с компанией Яндекс, поэтому его тянут за собой многие сервисы Яндекса, в частности - поиск по сайту. Но к Яндексу он не имеет никакого отношения.
По ВСЕМ вылавливаемым доменам - только такие преимущественно юзерагенты. Что это значит? На сайт ходят десятки тысяч в день, а в отчетах CSP только эти юзерагенты.
Похоже, ваш csp.php принимает не все отчёты. Скрипт от LEOnidUKG поставили, что ли? У его скрипта есть такой глюк.
Нет, скрипт
Более читаемые отчеты + раскладывает по папкам вида 21012015
Может пригодится кому...
<?php
/*function spam($data)
{
$mas***91;***93;=Array(); //список для игнора 'bad_url_1', 'bad_url_2', 'bad_url_3'...
$kol=count($mas);
$result=0;
for ($i=0; $i<$kol; $i++)
{
if ( ($mas***91;$i***93;)&&(strpos($data,$mas***91;$i***93;)) ) $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***91;'DOCUMENT_ROOT'***93;.'/csp/'.date("dmY"))) mkdir($_SERVER***91;'DOCUMENT_ROOT'***93;.'/csp/'.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***91;1***93;)
{
preg_match('#"violated-directive":"(.*)",#isU',$data,$url1);
$var_array = explode('/',$url***91;1***93;);
if($var_array***91;2***93;)file_put_contents($_SERVER***91;'DOCUMENT_ROOT'***93;.'/csp/'.date("dmY").'/'.$var_array***91;2***93;, 'violated-directive: '.$url1***91;1***93;."\nUSER_AGENT: ".$_SERVER***91;'HTTP_USER_AGENT'***93;."\nIP: ".$_SERVER***91;'REMOTE_ADDR'***93;."\n\r#---------------------------------------------------------------~\n", FILE_APPEND | LOCK_EX);
else file_put_contents($_SERVER***91;'DOCUMENT_ROOT'***93;.'/csp/'.date("dmY").'/'.date("H").'-csp-report.txt', $print_data."\n".$_SERVER***91;'HTTP_USER_AGENT'***93;."\n".$_SERVER***91;'REMOTE_ADDR'***93;."\n----------------------------------------\n", FILE_APPEND | LOCK_EX);
}
else
{
file_put_contents($_SERVER***91;'DOCUMENT_ROOT'***93;.'/csp/'.date("dmY").'/'.date("H").'-csp-report.txt', $print_data."\n".$_SERVER***91;'HTTP_USER_AGENT'***93;."\n".$_SERVER***91;'REMOTE_ADDR'***93;."\n----------------------------------------\n", FILE_APPEND | LOCK_EX);
}
}
#}
}
?>
Ествественно, не в таком виде, тут форум его изменяет. Скрипт ошибок не выдает.
Это не скрипт, а один большой костыль. Данные приходят в разном порядке, и ТАК парсить их нельзя. За такое вообще вон из проффесии.
Замените у него с data_z, до $print_data код на
$document_uri = $object['document-uri'];
$referrer = $object['referrer'];
$violated_directive = $object['violated-directive'];
$original_policy = $object['original_policy'];
$blocked_uri = $object['blocked-uri'];
$source_file = $object['source-file'];
И парсинг json давайте по старинке сделаем - json_decode($data, true)
А лучше выкиньте и возьмите вариант от Леонида.
Это не скрипт, а один большой костыль. Данные приходят в разном порядке, и ТАК парсить их нельзя. За такое вообще вон из проффесии.
. . .
А лучше выкиньте и возьмите вариант от Леонида.
Угу, а за такую работу с JSON как у Леонида: $spsline=preg_replace('@.*?"blocked-uri":"@smi','',$data); - талоны на доп.питание выдавать?
Вы же сами пишете: "Данные приходят в разном порядке" - где гарантия от потери полей при удалении части строки до blocked-uri?
Угу, а за такую работу с JSON как у Леонида: $spsline=preg_replace('@.*?"blocked-uri":"@smi','',$data); - талоны на доп.питание выдавать?
Вы же сами пишете: "Данные приходят в разном порядке" - где гарантия от потери полей при удалении части строки до blocked-uri?
На странице http://zabolotskikh.com/tips/content-security-policy/ в данный момент один json_decode без каких либо костылей.
PS: если это не его скрипт, а "его" сидит где-то в rar архиве - ну камушек в его огород значит.
Ребята, залейте хороший (проверенный) скрипт csp.php на http://pastebin.com/
Спасибо.
PS: Правила CSP у вас очень жесткие - полностью запрещены инлайн-скрипты и инлайн-хэндлеры в тэгах (типа onClick, onMouseOver...). Вы их не используете, или всё сделано на jQuery?
навострился сразу на javascript-e
Это не скрипт, а один большой костыль. Данные приходят в разном порядке, и ТАК парсить их нельзя. За такое вообще вон из проффесии.
Замените у него с data_z, до $print_data код на
А лучше выкиньте и возьмите вариант от Леонида.
Это скрипт, который давали в этой теме. Согласен, написан криво.
Я мог бы и свой написать, только не понимаю, что в итоге должно приходить (максимально), и что из этого надо парсить (что нам нужно), и куда пропарсенное складировать (отчеты по доменам - это понятно, но куда что?). Если кто бы подробно расписал логику, я бы сделал нормальный парсинг. Ну а еще лучше - если кто поделится нормальным скриптом :)