Поиск и устранение причины странных запросов
Здравствуйте.
Необходимо найти причину проблемы и устранить ее. В логе Apache начали появляться странные записи. Выглядит это так: c ip поступает нормальный запрос. В следующую секунду-две от этого же ip идут 10-20 запросов, где в конец добавлены коды. Как выяснилось большинство из этих кодов - функции из mootools.js ! Некоторые из последующих заходов на другие страницы влекут опять поток таких же запросов. Вот пример одного из запросов: Код:
GET /function%20Array()%20%7B%20[native%20code]%20%7D Из них некоторые - 100% обычные люди, которые оформляют заказы с реальными номерами телефона, переходят с вполне нормального поиска. Остальные посетители - ок. Длится это как минимум дней 10. Более ранние логи не сохранились. Код дописывается почти всегда один и тот же. Смоделировать ситуацию со своего компьютера у меня не получилось - ни в логе апача, ни браузере таких запросов не выполнялось. Логи Апача за разные периоды с описанными проблемами и адрес сайта вышлю по запросу в личку. Как понимаю я, варианты: 1. ошибка javascript в браузере 2. ошибка сервера 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 + ')';} |
Понятно, задача сводится к выяснению в каком месте кода в место где должна быть ссылка подставляются функции. Могу взяться.
|
Часовой пояс GMT +3, время: 13:36. |