Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.11.2013, 02:15
Новичок на форуме
Отправить личное сообщение для AndrewP Посмотреть профиль Найти все сообщения от AndrewP
 
Регистрация: 27.11.2013
Сообщений: 3

Поиск и устранение причины странных запросов
Здравствуйте.

Необходимо найти причину проблемы и устранить ее.
В логе Apache начали появляться странные записи.
Выглядит это так: c ip поступает нормальный запрос.
В следующую секунду-две от этого же ip идут 10-20 запросов, где в конец добавлены коды.
Как выяснилось большинство из этих кодов - функции из mootools.js !
Некоторые из последующих заходов на другие страницы влекут опять поток таких же запросов.
Вот пример одного из запросов:
Код:
GET /function%20Array()%20%7B%20[native%20code]%20%7D
Количество ip с такими странными действиями - примерно пару десятков из пару тысяч нормальных посетители.
Из них некоторые - 100% обычные люди, которые оформляют заказы с реальными номерами телефона, переходят с вполне нормального поиска.

Остальные посетители - ок.
Длится это как минимум дней 10. Более ранние логи не сохранились.

Код дописывается почти всегда один и тот же.
Смоделировать ситуацию со своего компьютера у меня не получилось - ни в логе апача, ни браузере таких запросов не выполнялось.

Логи Апача за разные периоды с описанными проблемами и адрес сайта вышлю по запросу в личку.


Как понимаю я, варианты:
1. ошибка javascript в браузере
2. ошибка сервера
3. где-то внедрен хакерский код, который вызывает такие действия.

Стоимость и сроки спрогнозировать сложно для такой задачи. Но чем раньше, тем лучше.
По деньгам - рассматриваю адекватные предложения. Зависит от того, в чем окажется проблема. Стоимость может быть от нескольких десятков, до нескольких сотен дол. США.
Ответить с цитированием
  #2 (permalink)  
Старый 28.11.2013, 02:17
Новичок на форуме
Отправить личное сообщение для AndrewP Посмотреть профиль Найти все сообщения от AndrewP
 
Регистрация: 27.11.2013
Сообщений: 3

А вот что получается, если собрать все функции из GET запросов одного ip:
function(){return lower;}

function(fn, bind){Array.forEach(this, fn, bind);return this;}

function Array() { [native code] }

function(methodName){var args = Array.slice(arguments, 1);return this.map(function(item){return item[methodName].apply(item, args);});}

function(){return this.filter(function(item){return item != null;});}

function(){return this.filter(function(item){return item != null;});}

function(item, from){return this.indexOf(item, from) != -1;}

function(keys){var obj = {}, length = Math.min(this.length, keys.length);for (var i = 0; i < length; i++) obj[keys[i]] = this[i];return obj;}

function(){return (this.length) ? this[Number.random(0, this.length - 1)] : null;}

function(object){var result = {};for (var i = 0, l = this.length; i < l; i++){for (var key in object){if (object[key](this[i])){result[key] = this[i];delete object[key];break;}}}return result;}




function(){return (this.length) ? this[this.length - 1] : null;}

function(array){this.push.apply(this, array);return this;}

function(item){for (var i = this.length; i--;){if (this[i] === item) this.splice(i, 1);}return this;}

function(item){if (!this.contains(item)) this.push(item);return this;}

function(array){for (var i = 0, l = array.length; i < l; i++) this.include(array[i]);return this;}

function(){for (var i = 0, l = this.length; i < l; i++){if (this[i] != null) return this[i];}return null;}

function(){var array = [];for (var i = 0, l = this.length; i < l; i++){var type = typeOf(this[i]);if (type == 'null') continue;array = array.concat((type == 'array' || type == 'collection' || type == 'arguments' || instanceOf(this[i], Array)) ? Array.flatten(this[i]) : this[i]);}return array;}

function(array){if (this.length < 3) return null;if (this.length == 4 && this[3] == 0 && !array) return 'transparent';var hex = [];for (var i = 0; i < 3; i++){var bit = (this[i] - 0).toString(16);hex.push((bit.length == 1) ? '0' + bit : bit);}return (array) ? hex : '

function(){this.length = 0;return this;}

function(array){if (this.length != 3) return null;var rgb = this.map(function(value){if (value.length == 1) value += value;return value.toInt(16);});return (array) ? rgb : 'rgb(' + rgb + ')';}
Ответить с цитированием
  #3 (permalink)  
Старый 29.11.2013, 14:10
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

Понятно, задача сводится к выяснению в каком месте кода в место где должна быть ссылка подставляются функции. Могу взяться.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск