Почему Касперский определяет на сайте троян HEUR:Trojan.Script.Generic? (и возможный способ устранения)

Почему Касперский определяет на сайте троян HEUR:Trojan.Script.Generic? (и возможный способ устранения)

814
ПОДЕЛИТЬСЯ

Хорошего времени суток. У меня созрела еще одна статья, касающаяся сохранности, а поточнее доступа к Вашим веб-сайтам , уважаемые веб-мастера… и разрешите мне Для вас поведать.

Угроза «HEUR:Trojan.Script.Generic»
Может быть у Вас есть веб-сайт и Вы не употребляли библиотеки типа jQuery, а решили просто на яваскрипте «спагетти-код на веб-сайте намотать» (пусть как я, ради спортивного энтузиазма). И здесь Вы наверняка даже не ждете таковой «подлости» от возлюбленного антивируса Касперского, тем наиболее раз Вы им не пользуетесь… а пользуется Ваш друг. Он то и увидит такое сообщение на Вашем веб-сайте «объект заражен HEUR:Trojan.Script.Generic»:

А тем временем, остальные антивирусы молчат.

Чтоб поведать Для вас в чем здесь дело, я обязан привести код на яваскрипте, потому про него и буду говорить дальше.
Решил означает я с даталистом поиграться для организации автокомплита без посторониих библиотек (возникло в HTML5 такое волшебство, да беда у него с русскими знаками правда, пардон за оффтоп).
Написал код формы:

<form method="get" action="" >
<input type="search" name="q" value="<?= $q; ?>" list="json-datalist" id="i_search" autocomplete="off" />
<input type="submit" value=" Находить " />
</form>
<datalist id="json-datalist"></datalist>
И следом написал, как мне казалось, безопасный код:

option.value = decodeURIComponent(unescape(item));
// Добавляем элементы перечня <option> к <datalist>. request.onreadystatechange = function(response) {
if (request.readyState === 4) {
if (request.status === 200) {
var jsonOptions = JSON.parse(request.responseText); // Parse the JSON
// Перебираем массив JSON
jsonOptions.forEach(function(item) {
var option = document.createElement(‘option’);
// Устанавливаем значение с помощью элемента в json-массив. // Принимаем элементы <datalist> и <input>
var dataList = document.getElementById(‘json-datalist’);
var input = document.getElementById(‘i_search’);
// Создаем новейший XMLHttpRequest. var request = new XMLHttpRequest();
// Перехватываем состояние запроса. dataList.appendChild(option);
});
input.placeholder = "Please type";
} else {
// Раз произошла ошибка
input.placeholder = "Couldn’t load datalist";
}
}
};
// обновим плейсхолдер
input.placeholder = "Loading options…";

// Установить и сделать запрос
request.open(‘GET’, URL_BASE+’/data.json’, true);
request.send();
Получаем наш троян!
Вы не видите? О, и я тоже не вижу, а Касперский лицезреет! — Где троян?
А лицезреет он его тут:

request.open(‘GET’, URL_BASE+’/data.json’, true);
Тогда убираем эту строку и все в порядке — наш скрипт не работает, и антивирус спокоен.

«Разбор полетов»
Означает необходимо поковыряться в перехватчике состояния запроса — onreadystatechange.
Нашим лекарством будет отдельная функция, назовем ее updatePage, в которую мы напишем перебор возвращаемого JSON-массива и присвоим ее тут в нашем перехватчике состояния:

request.onreadystatechange = updatePage;
В итоге переписал код так, что антивирус Касперского больше нас не тревожит:

var dataList = document.getElementById(‘json-datalist’);
var input = document.getElementById(‘i_search’);
var url = URL_BASE + ‘/data.json’;
var request = null;
if(window.XMLHttpRequest)
request = new XMLHttpRequest();
else if (window.ActiveXObject)
request = new ActiveXObject(Microsoft.XMLHTTP);
function updatePage()
{
if (request.readyState == 4)
if (request.status == 200)
{
var jsonOptions = JSON.parse(request.responseText);
jsonOptions.forEach(function(item) {
var option = document.createElement(‘option’);
option.value = item;
dataList.appendChild(option);
});
input.placeholder = "Please type";
delete request;
}
else
{
input.placeholder = "Couldn’t load datalist";
}
}
request = getXmlHttp();
request.open("GET", url, true);
request.onreadystatechange = updatePage;
request.send(null);
P.S. Я не говорю, что это единственная причина, по которой может показаться предупреждение в виде такового сообщения от жарко возлюбленного антивируса, ведь могут быть и случаи существования вправду «левого скрипта» на вашем веб-сайте. habrahabr.ru