Нас тут уже наругали за беспечность, поэтому не забывайте общие правила безопасности для "самопальных" скриптов:
1. Для этого варианта csp.php надо обрабатывать имя создаваемого файла по домену
2. Лучше обрабатывать данные, которые пишутся в файл по htmlentities(): file_put_contents($FileName, htmlentities($content)) - мы всё-равно их читаем как текстовые, а возможность инжектов php-кода это отключит.
3. В директории, куда пишутся файлы, надо отключать исполнение скриптов и закрывать доступ через WEB-интерфейс/по IP.
4. Смените название директории, в которую пишет скрипт на свою. Извне её узнать не так уж легко, а для взлома её нужно знать.
* По-уму, в скрипте csp.php надо убрать else и обрамляющие {} в условии: if(!is_dir($_SERVER['DOCUMENT_ROOT'].'/csp/'.date("dmY"))) mkdir($_SERVER['DOCUMENT_ROOT'].'/csp/'.date("dmY"), 0777); else { . . . // Это - оставить }иначе он не записывае самый первый блокируемый url за каждый день - а только создаёт папку.
nslookup -type=all crwdcntrl.net говорит, что это не домен, контролируемый Google.
На akamai-hd хостится много malware, если ваш сайт не использует akamai-hd как CDN - не разрешайте его. Сам Facebook юзает akamai-hd как CDN, но фэйсбуковских виджетах он не используется, так что для наших сайтов - не требуется.
Если что-то пропущено - покажут отчёты CSP и консоль браузера. Если открыто что-то лишнее - снизится эффективность CSP.
Я изучаю и проверяю руками каждый домен, прежде чем его открыть в CSP. Иногда даже приходится ставить эксперименты.
Для Apache 2 есть условный оператор IF, им можно в .htaccess фильтровать по Юзерагенту. Для Apache 1.3 подобного нет.
Если кэширование делается средствами PHP - можно CSP заголовок выдавать этим кэширующим модулем.
Своим скриптом сражаться со связкой вражеский_скрипт+плагин - не эффективно:
- браузерный плагин "приоритетнее" вашего скрипта и имеет доступ внутрь фреймов.
- вражеский скрипт вставляется и исполняется раньше вашего - первым после секции <head>
- вы не можете вмешаться внутрь замыкания типа:
(function() {. . .})();
- кроссплатформенно писать на javascript задача не из самых простых
Но, после заголовков CSP можно дочищать кое-что уже ява-скриптом: по крайней мере - восстанавливать свою рекламу, если она была скрыта вражеским плагином. Но это уже ручная работа под каждый плагин.
Там все данные - публичные: ОГРНИП, whois. А как только его "адвокаты" объявятся - будет ясно на кого взломы сайта вешать. Там ещё бабка надвое сказала, кому штраф светит, а кому crime record
/ru/forum/867276
Если bash недоступен как CGI-скрипт - можно забить.
Если на сайте Директ + Адсенс - этот "мусор" добавлять однозначно не надо, тк им как раз монетизируется плагины подмены рекламы и прочее malware.
Если на сайте стоят тизерки - надо смотреть и открывать нужные домены только для них.
Похоже, dlyanachalas прав на счёт "IN" - поиск по большому неупорядоченному условию". Проверить - легко, поменяйте условие в запросе
на
Тогда будет задействован индекс по id. Генерить строку с OR id= можно так же автоматически, если ваши id - в массиве $arr:
"WHERE id=".imlpode(" OR id=", $arr)
PS: А на счйт полей BLOB - 2 месяца назад решала аналогичную проблему с таблицей на 500 000 записей: у меня были поля ТEXT(по сути - те же BLOB, MySQL резервирует под них место большого размера, похоже, даже под пустые). А потом в этом огромном файле очень долго ищет даже по другим индексным полям, причём TEXT - даже не выбирались при SELECT. Вынесла их в другую таблицу и связала по ID - всё стало летать.
У Гугла - да, наружный фрейм без src, а внутри него ещё 2 фрейма уже с scr. Там сам чёрт ногу сломит разбираться. Плюс, некоторые malvare вставляют свою рекламу прямо на место Адсенса, тк браузерному плагину доступны все iframe на странице.
Так что если что заметите подозрительное - вываливайте в топик не раздумывая, будем смотреть все вместе, мы - в одной лодке.
PS: doubleclick.net - универсальная платформа показа рекламы, через неё может показываться не только Адсенс. Любой желающий может подключиться и крутить свою рекламу на этой платформе, она ведёт учет показов, кликов, меряет конверсию и тп.
Так, что там тоже могут быть сюрпризы.
Разницы между PHP и .htassess - никакой. Надо только, чтобы CSP вставлялась на все страницы сайта, а не только на морду. htaccess гарантированно вставляет на все, даже на админку сайта, что не всегда хорошо.
Для Адсенса надо:
font-src: добавить *.gstatic.com fonts.googleapis.com заменить на *.googleapis.com https://fonts.googleapis.com заменить на https://*.googleapis.com https://fonts.gstatic.com заменить на https://*.gstatic.com frame-src: добавить *.googleadservices.com добавить https://*.googleadservices.comimg-src: добавить *.2mdn.net добавить *.googleapis.com добавить *.gstatic.com добавить https://*.2mdn.net добавить https://*.doubleclick.net добавить https://*.googleapis.com добавить https://*.gstatic.comscript-src: добавить https://*.gstatic.com style-src: добавить *.gstatic.com добавить https://*.gstatic.com
Если кроме Адсенса другой рекламы на сайте нет, смело убирайте из всех директив:
PS: На счёт *.twitch.tv - не знаю, разве что вы их фильмы на сайте показываете.
Поле BLOB в таблице на 2 млн записей - очень плохо, будет тормозить. Попробуйте преобразовать его в VARCHAR(255) и писать туда бинарные данные, кодированные в base64, 150 байт - туда войдут.
Или нормализовать данные из BLOB в отдельную таблицу.
Уберите из CSP ваш домен и покажите в топике или в личку.
Это ребята из getintent.ru, RTB-сеть
Является дубляжом, но это не ошибка - работать будет. Домен без протокола считается с http://
Прописывайте 'unsafe-inline' 'unsafe-eval' в директиве script-src и 'unsafe-inline' в style-src.
unsafe-inline - используют Директ и Адсенс, и скорее всего - ваш сайт (onClick='' в тэгах)
unsafe-eval - используют Директ и Метрика.
Обойтись без 'unsafe-inline' и 'unsafe-eval' можно только на сайте, где нет рекламы, например, сайтах-визитках организаций.---------- Добавлено 23.02.2015 в 19:40 ----------
Настройки Ютуба под iframe и object - совершенно разные и по доменам и по директивам CSP. И В репортах не должно быть пусто.
Резаться они не будут, тк Андсенс показывает их в iframe. Скрипты внутри iframe вы не сможете резать своей CSP.