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

theKashey
На сайте с 22.02.2012
Offline
70
#741

весь нормальный "скрипт" это один json_decode, после чего кладем данные куда либо - в SQL, в монгу, в csv(который потом перекладываем куда угодно)

Логи, вообще не так чтобы и нужны - ведь главное не кого блоканули, а кого пропустили.

Самый простой вариант этого - у заболоткина (http://zabolotskikh.com/tips/content-security-policy/)

$report = file_get_contents('php://input');
$report = json_decode($report, true);

if (empty($report)) {
exit;
}

$report = $report['csp-report'];

$delimiter = '|';
$csvLine = '';
$csvLine .= !empty($report['document-uri']) ? $report['document-uri'] : $delimiter;
$csvLine .= !empty($report['referrer']) ? $delimiter . $report['referrer'] : $delimiter;
$csvLine .= !empty($report['violated-directive']) ? $delimiter . $report['violated-directive'] : $delimiter;
$csvLine .= !empty($report['original-policy']) ? $delimiter . $report['original-policy'] : $delimiter;
$csvLine .= !empty($report['blocked-uri']) ? $delimiter . $report['blocked-uri'] : $delimiter;
$csvLine .= !empty($report['status-code']) ? $delimiter . $report['status-code'] : $delimiter;
$csvLine .= "\r\n";

file_put_contents('report.csv', $csvLine, FILE_APPEND);

Просто в csv. Делай потом что хочешь.

Еще более простые (и правильные) варианты идут с различными адаптерами к БД, это которые понимают синтаксис INSERT INTO xxx SET ?, где ? - фактически входящий json.

Digdug
На сайте с 11.07.2012
Offline
119
#742

theKashey, этот вариант безопасный?

C
На сайте с 07.05.2010
Offline
243
#743

Разрешить tns-counter.ru ?

Ladycharm:
Доход - увеличится, но не у вас, а у тех, кто использует данные с этого счётчика.

А я все таки разрешил. Доход от Google обвалился на 30%. Продолжал эксперимент 4 дня. Вчера с утра снес. В итоге доход восстановился.

Поскольку эта контора, как вы писали, связана и с Яндекс (на самом деле сейчас все друг с другом связаны), временно снесу доступ всех сервисов Яндекса. Посмотрим, какая будет реакция.

L
На сайте с 07.12.2007
Offline
351
#744
ctit:
Разрешить tns-counter.ru ?
. . .
А я все таки разрешил. Доход от Google обвалился на 30%. Продолжал эксперимент 4 дня. Вчера с утра снес. В итоге доход восстановился.

Больше похоже на ошибку в CSP при вставке этого домена, или у вас CSP обрезается по длине.

tns-counter.ru - безвредный счётчик-картинка для проекта «Социологическое исследование Российской аудитории Интернета» от компании Гэллап Медиа.

C
На сайте с 07.05.2010
Offline
243
#745
Ladycharm:
Больше похоже на ошибку в CSP при вставке этого домена, или у вас CSP обрезается по длине.

Но в этом случае, в логах должны быть ошибки. Хотя возможно, действительно, причина в другом. Снесу Яндекс, отпишусь по тестам.

Т
На сайте с 18.02.2014
Offline
13
#746

Понадобилось встроить в WP. Задолбался вбивать домены, поэтому накидал быдлокод. Может кому пригодится.

function add_csp_header(){

$csp = '';
$sites = array('google-analytics.com', 'google.com', 'googleapis.com', 'gstatic.com', 'doubleclick.net', 'googlesyndication.com', 'yandex.ru');
$uris = array('','*.','https://*.');
$parts = array("default-src 'self' data:", "style-src 'self' 'unsafe-inline'", "frame-src 'self'", "img-src 'self'", "media-src 'self'","font-src 'self'", "script-src 'self' 'unsafe-inline' 'unsafe-eval'");

foreach($parts as &$part){
$csp .= $part.' ';
foreach($sites as &$site){
foreach($uris as &$uri){
$csp .= $uri.$site.' ';
}
}
$csp .= ';';
}

$csp = 'Content-Security-Policy: '.$csp.' report-uri /csp.php;';

header($csp);
}

csp.php


<?php
$send = '';
$data = file_get_contents('php://input');

if ($array = json_decode($data, true)){

$send .= "document-uri: ".$array['csp-report']['document-uri']."\n";
$send .= "blocked-uri: ".$array['csp-report']['blocked-uri']."\n";
$send .= "referrer: ".$array['csp-report']['referrer']."\n\n";
$send .= $data."\n\r";

mail('your@mail.com', 'CSP', $send."\n");
}

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

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#747

на почту уведомление о каждой блокировке?! Вы это серьёзно?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Т
На сайте с 18.02.2014
Offline
13
#748
LEOnidUKG:
на почту уведомление о каждой блокировке?! Вы это серьёзно?

Для отладки использую, можно закомментить.

KP
На сайте с 25.03.2011
Offline
73
#749

А кто-нибудь пробовал использовать плагин для WP https://wordpress.org/plugins/wp-content-security-policy/ ?

L
На сайте с 07.12.2007
Offline
351
#750

kimon-promo, этот плагин - неудобный и без "доработки напильником" на работает как надо.

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