Вы наверное замечали в статитике LI в графе «переходы на другие сайты» кучу непонятных доменов вроде x8k.ru, quick-searcher-sng-v2.com или *.xyz? Причем на сайте ничего такого нет и в помине, никаких вирусов, ничего. Откуда же они все берутся?
Все просто. Помните инсталлы, которые ушлые вебмастера забрасывают юзерам? С ними в систему устанавливаются многочисленные тулбары, малвари и даже целые браузеры. Вы же не думаете, что люди их написавшие просто так платят по 2500 рублей за 1000 установок их софта? Разумеется нет. Но если в открытую красть деньги со счета в сбербанке слишком палевно и подпадает под УК, то просто добавлять на посещаемых сайтах рекламу — совершенно безопасно. Конечно, их возможности ограничены, но они могут на любой сайт встроить свой js, который может делать что угодно — заменять ваш адсенс код тизерам, ставить попап с рекламой, кликандер, что угодно. Не забывайте — в LI лишь палятся те сайты, которые сами используют LI (что глупо). На моем сайте развлекательной тематики 10-30% юзеров оказались заражены такой фигней (на секундочку забудем, кто именно подсовывал им инсталлы).
Конечно, такой возможностью пользуются не только злоумышленники — есть и вполне «белые» плагины и расширения браузера, которые с помощью такого яваскрипта делают полезные вещи. Например, советник яндекса, или плагин от Evernote. Но в большинстве случаев это именно малвари. И, к сожаелению, SSL тут не спасет — половина этой малвари грузится через https, а внедрение происходит на уровне браузера.
В идеальном мире сами браузеры должны заниматся защитой пользователей (а грамотные пользователи не попадутся на такие вещи — поэтому на сайтах с более-менее продвинутой аудиторией такой проблемы нет). Но увы, разве что Яндекс.Браузер делает какие-то шаги. В некоторых случах поисковые системы даже накладывают санкции за такие вещи (впрочем, никогда с этим не сталкивался, лишь на основе сообщений на форумах) — особенно если это касается развлекательных сайтов с хорошей аудиторией. Но даже без этого часть пользователей ваших сайтов скорее всего видит не один аккуратненький баннер адсенса, а вакханалию из полурабочего сайта, заваленного шок-тизерам. Что напрямую влияет и на ваш собственный доход, и на отношение пользователей.
Но что же делать? Все просто — все таки данный софт действует в рамках браузерных ограничений, которые предписывают ему следовать кое-каким правилам. Если сайт указывает, что нельзя загружать любые js файлы, кроме как с собственного домена — то так оно и будет. Тоже самое касается изображений и стилей. Да, всего лишь) Называется данная технология Content Security Policy.
Первый пациент — это сервис с 5000 уников в сутки довольно развлекательной тематики. Каждый день 150 человек переходили на левые сайты через такие расширения (повторюсь, это только среди тех идиотов, которые использовали LI на своих TDS для перенаправления посетителей). С установкой CSP каждый день блокировалось 10.000 случаев подгрузки левых JS-файлов (во первых, каждый пользователь загружал несколько страниц, каждый раз вызывая блокировку. Во вторых, при просмотре одной странице к ней могли попытаться подгрузится 5-10 файлов — даже не знаю, как они решают конфиликты между собой, если каждый из них будет вешать кликандер =). Вот выборка самых популярных доменов за три дня:
Как видите, полный фарш — и Яндек.Советник (метабар), и маркетгид, и quick-searcher, даже google analytics подгружают (на сайте его нет). И это только вершина айсберга, еще часть скриптов грузится через data:base64 (они тоже блокируются, видны в таблице), и еще часть — инлайны, который увы не блокируются (если запретить — тот же адсенс не разместишь).
Но переходим к технической части. Для блокирвки всего этого хлама нужно, чтобы сайт отдавал браузеру заголовок «Content-Security-Policy» со списком настроек и разрешенных хостов. Например, вот так (разрешен адсенс, LI, метрика, VK/FB/Twitter), через PHP:
header("Content-Security-Policy: default-src 'self' data: http://googleads.g.doubleclick.net http://pagead2.googlesyndication.com/ https://pagead2.googlesyndication.com/ http://www.google.com/ http://mc.yandex.ru/ https://mc.yandex.ru/;style-src 'self' 'unsafe-inline' https://vk.com/ https://st.mycdn.me/;frame-src 'self' http://www.facebook.com/ https://www.facebook.com/ http://static.ak.facebook.com/ https://s-static.ak.facebook.com/ https://connect.ok.ru/ http://vk.com/ https://login.vk.com/ https://vk.com/ https://*.doubleclick.net/ http://googleads.g.doubleclick.net/ http://platform.twitter.com/ http://pagead2.googlesyndication.com/ https://pagead2.googlesyndication.com/;img-src 'self' http://counter.yadro.ru/ https://mc.yandex.ru/ http://vk.com/ https://vk.com/ https://syndication.twitter.com/ https://s0.2mdn.net/ https://pagead2.googlesyndication.com/ http://pagead2.googlesyndication.com/ data:;media-src 'self';font-src 'self';script-src 'self' 'unsafe-inline' 'unsafe-eval' https://vk.com/ http://vk.com/ https://queuev4.vk.com/ http://platform.twitter.com/ https://cdn.syndication.twitter.com/ http://pagead2.googlesyndication.com/ https://pagead2.googlesyndication.com/ https://connect.facebook.net/ http://connect.facebook.net/ https://*.doubleclick.net/ http://connect.ok.ru/ https://connect.ok.ru/ https://mc.yandex.ru/ http://mc.yandex.ru/ https://s0.2mdn.net/; report-uri /csp.php");
(ВНИМАНИЕ! Этот код указан в качестве примера, его работоспособность и безопасность никак не гарантируется. Более того, тут много лишнего, часть исключений дублируется и т.д. Я не спец, мне главное чтобы ехало)
Зачем одновременно http и https? Увы, некоторые браузеры не понимают разницы, и если написать только домен (стандарты это разрешают), загрузку через SSL блокируют (это хорошо видно в репортах). Вам же не хочется, чтобы у энного процента посетителей не грузился адсенс? Так же данный заголовок можно добавить через .htaccess, что-то вроде такого (максимально параноидальный — все загрузки вне самого домена блокируются, даже статистика не будет работать):
Headers set Content-Security-Policy "default-src 'self'"
Вообще, настройка правил — дело тонкое и слегка муторное. Для начала устанавливаете чистый заголовок (одним из методов выше) с «Content-Security-Policy-Report-Only«. Он предназначен для тестирования, и ничего не блокирует — зато в консоли бразуера (ФФ => Инструменты => Веб разработка => Веб консоль, Shift+Ctrl+K, в хроме аналогично) будет выдавать сообщение о каждом заблокированном ресурсе и какая именно директива нарушена. Добавляем в исключения, запускам опять, правим, и так пока все будет ОК. Очень муторно, учитывая что каждый норовит подгружать свои ресурсы из кучи источников, и нужно разрешение и для фреймов, и для скриптов, и для js. Но чем проще сайт и меньше используется сторонних инструментов — тем проще, на один из сайтов добавил только counter.yadro и всё) И наоборот, для сайтов с UGC-контентом часть придется разрешать на все домены (картинки например). Проверить, установлен ли заголовок, можно в тех же веб-инструментах, вкладка сеть.
После того, как настроили — убираете «-Report-Only», и вауля — все ненужное блокируется. Для собирания отчетов — добавляете еще «report-uri /csp.php» (это не обязательно, но желательно — для проверки, не накосячили ли где). Пример такого обработчика, а так же более подробное разъяснение разных директив — http://zabolotskikh.com/tips/content-security-policy/ [RU] (мой пост — лишь введение для новичков, полноценный FAQ выходит за рамки статьи), а всякие полезности и RFC — на http://www.cspplayground.com/ [EN].
А теперь самое главное — а какой же эффект от всего этого? Хотелось бы конечно сказать, как офигенно увеличился доход/CTR, но этого нет, пока что все в пределах статистической прогрешности. Пользователи тоже не стали от радости строчить хвалебные комменты. Переходы на левые сайты конечно полностью пропали, но профита от этого не прибавилось.
Тем не менее, один неожиданный эффект все же проявился — трафик с яндекса за три дня увеличился вдвое, на +500 уников в сутки. Мне кажется, тут дело в том, что на сайте установлена метрика, а левые скрипты подгружали в том числе маркетгид и другую нехорошую рекламу. Исчезла реклама — Яндекс убрал фильтры. Возможно, это просто совпадение с недавним АПом, может это краткосрочное явление — кто его знает) В конце месяца узнаем. На двух других сайтах изменений нет (но там и трафика куда меньше, и нет дисбаланса гугла и яндекса). Но все же если у вас сайт с 5к+ уников в сутки, а число переходов на левые сайты зашкаливает — попробуйте использовать CSP. Хуже от этого точно не будет (если правильно настроите и не заблочите что-то важное), а пользователям будет удобней пользоваться сайтом.
PS. Есть мысль сделать под это дело сервис (автоматическая генерация CSP под нужды пользователя, галочкам напротив установленных скриптов — адсенс/метрика/LI), но решил пока ограничится вводным постом. Во первых, мне еще курить и курить RFC, чтобы понять и найти оптимальные решения, а во вторых — неясно, востребовано ли это. Топик на серче хоть и активен, но в основном единичные энтузиасты, у некоторых весьма хорошие результаты (там же можно найти примеры кода), а сами сайты из категории 30-50к уников в сутки и выше. Сам я про CSP уже давно слышал, но руки дошли прикрутить только сейчас. Если эффект для яндекса подтвердится — буду ставить на все сайты по умолчанию (хотя, например, на блоге или топсапы это почти бесполезно — мало кто будет работать в интернете с расширениями, мешающими этой работе).
Сложно и несистемно описал.
Для тех, кто собирается откомментитовать «многа букафф», отчаявшись найти выход в лабиринте мыслей Андрея Г. (т.е. понять о чём (и как) идёт речь в объёмной статье) моей секретаршей подготовлено короткое и ПОНЯТНОЕ описание:
…
Content Security Policy (CSP) — технология для обеспечения безопасности пользователей, позволяющая разработчикам сайтов четко объяснить браузеру, на какие адреса тот может выполнять межсайтовые запросы.
…
Теперь понятно? Понятно — должны заинтересоваться.
Заинтересовались? Забейте в Яндексе «CSP» и ознакомьтесь с первыни двумя-тремя статьями.
Ознакомились? Добро пожаловать назад, на блог Андрея Г. Теперь вам будет всё понятно. 😉
SLANETцитировать →
Спасибо — отличная тема! Думаю сделаю на всех своих площадках, даже если эффекта будет минимум.
Евгенийцитировать →
Ага, тоже на Серче увидел этот пост и внедрил на несколько сайтов CSP. Говнеца порядочно блокируется даже на сайте в 1500 уников.
Этот мастхев внедрять надо на каждый сайт по-любому. Я в CMSку встроил сразу.
Только, как по мне, надо просто блокировать script (в том числе и инлайн), кроме разрешенных хостов (типа тизерок). Все остальное — разрешить: frame, img, style и font с любого ресурса.
В твоем коде получается, что картинку с чужого сайта и не вставишь, ифрейм с ютуба или другого видеохостинга тоже.
P.S. Хотел у себя написать в блоге, но теперь уж не буду
Санчоцитировать →
Санчо, степень зараженности аудитори индивидуальна для сайтов. На топсапе и блоге например ноль целых хрен десятых, на развелкательных сайтах — дофига. Для них вообще по умолчанию надо делать, на любой посещаемости.
Инлайн скрипты нельзя блокировать — дропнется адсенс. Подключать его через сторонний файл — нарушение TOS. Куча всякого гомна лезет через object-src.
Для каждого сайта индивидуально. У меня на сайте нет подгрузки картинок с чужих хостов, и видео тоже, но если понадобится — включить несложно) А такой объемный код получился из-за соц.плагинов и виджетов.
Плюс, кажется, можно сделать как-то прописать хост сразу на все директивы, то есть один раз добавить mc.yandex.ru для всех — и фреймов, и скриптов, и картинок. Но надо изучать RFC)
Какая-то слабоосвещенная тема, ага. Судя по активности, сервис тем более никому не нужен, кроме 3,5 анонов, а не разбирающиеся закажут за 500р настройку с серча.
Sprytцитировать →
А, точняк, про Адсенс не подумал. Тогда да, инлайн оставить. А eval вроде в тизерках каких-то используется. Так что да, просто оставлять нужные хосты
Я пробовал прописывать просто домены, не фига у меня не работает. Другие пишут, что у них пашет. У меня только с прописыванием http и https нормально работает
Санчоцитировать →
Уверен, сервисом воспользуется именно 3,5 анона. Оно тебе надо?
Лучше оказывай тоже услуги по установке за 500 р. Делов там на 5 минут на каждый индивидуальный случай.
Санчоцитировать →
Eval — обойдутся) Тизеры не юзаю.
Про домены — именно. У меня то работает, но в отчетах дофига заблоченных. А на серче сидят срутся на эту тему «покажи мне браузер и конфиг». До похуй, в репортах же видно)
Сервис — в первую очередь под бурж (такого действительно нет — один был, но домен уже не отвечает). Это вообще тема хоть и старая, но очень мало инфы, все как-то полукустарно. И вообще непонятно, какого хуя бразуеры это допускают.
Не, нафиг, слишком муторная работа. Кодинг — пожалуйста, а вот такие пляски с фронтедом не очень люблю) Зато благодаря им (возможно, а может и нет) сервис впервые за три месяца прибавил посещалки) Так то вообще почти по всем сайтам идет в плюс и посещалка, и профит, закрепился на 10к униках, штурмую 11к, ляпота. Наконец-то просыпается активность.
Sprytцитировать →
php или python, давно хотел спросить
bbцитировать →
Ну ОК, 350 анонов воспользуются. Если бы ты там был хоть сколько известным блогером, то да, имело бы смысл хоть какой-то. Хотя почему мы бы не попробовать, конечно, раз интересно.
Понимаю 🙂
Санчоцитировать →
Спрут, годный пост. Был не в теме, прикручу на несколько сайтов, отпишусь по результатам посещалки.
Поскольку тематика образования привлекает школьников и студентов гуманитариев — сложно представить, что у них в браузерах творится.
dmxцитировать →
Сами заражаем, сами защищаемся?))
seoonly.ruцитировать →
Как годный пост в тему, там коментов кот наплакал
Вот такая она, аудитория. Если темы для срача нету, и не пишет никто ))
dmxцитировать →
Блин, а вот это нужная статейка. В закладки. Нужно разобраться и внедрить у себя. А то всякие там нехорошие люди инсталлы людям впарили, а воры наши денежки украли =)
s37dap42xцитировать →
Отличная вещь! Я как раз на днях ломал голову как же так. Вставляю в код картинку с другого сайта, а она не отображается. Обращаюсь напрямую — грузится. В теле HTML нет. Посмотрел на сгенерированый браузером код, а он сам дописывает disable этой картинке. Я думал как так то? Видимо при помощи этой технологии. Нужно тоже вникнуть. Так получается можно запретить тырить картинки с сайта …
WebPromote.Ruцитировать →
Не, это чисто вебмастерский альтрузим) Пока просто записал на будущее.
dmx, ага, в таких тематика это особенно актуально.
Просто пост для суровых вебмастеров-технарей, а не для «установил вордпресс — сайт готов» или дорвейщиков. Логично, что кто не занимается собственно сайтами — им CSP не интересен.
WebPromote.Ru, наоборот — ты на своем сайте можешь запретить использовать хотлинки на картинки. Серверная же защита от чужих хотлинков реализовывается по другому.
Sprytцитировать →
А я думал она и в обратную сторону тоже защиту делает. У меня видимо Бутстрап постарался порезал картинки. Или фиг его знает как так выходит.
А от Адблока эта штука может защитить?
WebPromote.Ruцитировать →
Само собой нет.
Адблок работает на уровне браузера, «выше» страницы по уровню, удаляя, ненужные узлы.
А CSP защищает от интеграции чужого кода в код страницы.
dmxцитировать →
Недельку назад задумался об этом. Ежедневно с флагманского сайта по 5-10 переходов на всякие маркетгиды, попандеры и т.д. Читал, читал и ни хера не понял. Если склад ума, как говорится, гуманитарный, самому сложно осуществить. А есть конкретные люди, которые за 500р такое делают или просто в ветке отписаться? (ветку читал, но она уже разрослась на две и куча хлама). Может в качестве исключения поможешь?
art_gudцитировать →
сервис возможно и не стоит делать, а вот скажем плагин для цмс — думаю на него будет спрос.
mainflow.ruцитировать →
art_gud, 5-10 не так критично. На серче топик — http://searchengines.guru/showthread.php?t=908708
mainflow.ru, плагин во первых уже есть (устаревший правда), а в вторых — его еще сложнее сделать. Я имею ввиду сервис в духе http://border-radius.com/ , а не что-то уберсложное.
Sprytцитировать →
давно замечаю такие левые сайты переходы на ли, вот бы реализовать это ….
Kyxapkaцитировать →
Есть два плагина на вордпресс
1. устаревший называется Content Security Policy
2. новый WP Content Security Policy Plugin
Максимцитировать →
CSP без https на сайте — это половинчатая мера.
Mik Foxiцитировать →
Да, но одно не заменяет другого. SSL без CSP не решит данной проблемы, но в отличие от CSP, замены рекламы провайдером в метро распространена куда меньше. А если нет передачи персональных данных, то наличие SSL не настолько критично для пользователей.
Sprytцитировать →
Максим, как-то стремно ставить новый плагин — там всего 20+ установок.
Михацитировать →
Я поставил себе плагин All In One WP Security & Firewall — он, вроде, справляется с подобными угрозами.
Михацитировать →
Сам заразил, сам обиделся, сам написал скрипт.
Ты точно необучамый, тратить время на такую х.. и его же логировать по часам
Алисацитировать →
Спрут, порадовал, чудесный пост.
Можно ли прописывать вместо https?// просто // кажется так должно работать же нынче.
Сервис надо, он не сложный по идее же,..
Другео дело когда у тебя 50 сайтов, половина на WordPress, остальные на черт поймеш чем.
Нужно как-то разумно составлять .htaccess, и инклюдить общую часть каким-то образом.
А то потом получится что раз в неделю будем править htaccess, да и htaccess бывают и без того могучие, где-то редиректов одних да правил доступа 100500,а тут еще CSP добавится.
Плагином для WordPress тут не отделаться.
jkeksцитировать →
За «заразил» я уже свои денежки получил, теперь время получить эти денежки за очистку хотя бы своего сайта от последствий)
«Такая хуйня» заняла не больше часа моего времени, а дала в результате +30% к посещаемости сайта, или +1500-2000 уников в день. Более чем достойный результат, на мой взшляд.
Кстати да, надо попробовать. Проблема не в стандарте, а в его поддержке некоторыми браузерами.
Просто в один CSP объединять кучу правил (даже если они не используются на конкретно этом сайта) + более лояльную политику к тем же изображениям и шрифтам, и его одного инклудить на все сайты. Или, еще проще, прописывать его на уровне конфига тоже же nginx для всех сайтов разом, и вауля, никакой возни.
У меня вообще апача нет, я этот хидер через php добавлял)
Именно что «по идее». Слишком ответсвенная задача, это не какие-то бордер-радиусы, тут и поддерживать в актуальном состоянии, и отслеживать скаммеров, поддержку браузеров и кучу всего. То есть быть постоянно в теме по CSP. С такими вводными мне уже как-то не особо хочется в это ввязываться, мешок геморроя за нихуя, да еще и в не особо интересной мне теме. Благо, есть вагон других проектов, куда можно пристроить руки)
Sprytцитировать →
Сервис тут не просто генератор нужен, а во первых нужно просканировать сайт и найти все ссылки и частотности, что бы не заморозить контент какой-нибудь.
Например часть картинок где-то вставлялось в старых постав с photobucket, потом стали вставлять с gyazo, потом еще откуда-то..
Так с ходу никто не вспомнит, а шерстить посты руками дело неразумное. Сканером тоже ходить надо аккуратно, что бы не повалить никого.
На шаредах полно сидят, прописать в апач нельзя.
Тут либо заголовок через htaccess либо модуль/класс какой-то надо универсальный.. либо под CMS что-то писать.
Вообщем теперь ясно что задача это непростая и зато это будет нормальная услуга за денежку.
Кстати рекомендую начать с WordPress и универсальных кодов, потом подключать DLE, Joomla ..
Ну реально нужно расчитывать на Шареды. Зато результат как ты говоришь будет заметен, и главное ты уже знаешь как его искать.
Странно что тема не всплывала. Маладец Спрут
Щас вот как напишу свой такой сервис =)//
jkeksцитировать →
Вот теперь это уж точно вне моих интересов 😀 Случайно замороженный контент ловить логами, хотя пикчи вообще по идее запрещать нельзя, а js-ы в основном либо инклудятся для всего сайта разом, либо локальные, либо популярные CDN.
У кого 50 сайтов — на шаредах не сидят. Кто сидит — тот может и для каждого сайта в отдельности добавлять/настраивать, ничего сложного.
Для этого и написал пост — инфы про CSP в сети крайне мало, хотя это далеко не новый стандарт, а засилье малварь на сайтах капитальное. Достаточно заглянуть в LI для сайтов лидеров по переходам: x8k.ru 854к/162кк за месяц, klickander.com 281к/57кк, infomedia.xyz 154к и т.д. У хитрожопых статы даже открыты — у clike.su по 40к уников в день, 1400к переходов на них за день (!!!) — http://www.liveinternet.ru/stat/clike.su/ref_servers.html?period=month . Можно просто идти по списку и предлагать установить CSP)
Бтв, cspgenerator.com свободен, вперед)
Sprytцитировать →
не не.. сначала проверить надо на мышках прежде чем начинать сервис.
но на бумажку записал тож к своему jAntivirus
jkeksцитировать →
HTTPS больше нужно не для защиты от провайдера в метро, а от ломанного роутера юзера. А такого рода лома все больше, юзер с ломанным браузером (тулбарами) все чаще имеет и роутер ломанный и подмену днс и еще много чего.
Mik Foxiцитировать →