Иногда я посматриваю статистику запросов и индексирования в google webmasters tools, зашел туда вчера и получил грозное предупреждение об обнаружении подозрительного ПО на моем сайте:
Но я точно знал что ничего не менял на сайте и пароль у меня не могли ни украсть ни подобрать, и полез разбираться, ситуацию осложняло то что Google не указывал на конкретный код или название вируса, а просто писал — есть подозрительный код на вашем сайте.
Ищем вирусы на сайте:
- Набираем в Гугле или вашем любимом поисковике запрос «проверка сайта на вирусы» и проверяете свой сайт на на вирусы с помощью первых 5-10 сервисов. Я для полноты картины проверил сайт на всех сервисах из первой десятки. И только один 2ip.ru — указал на наличие подозрительного кода, остальные 9 — ничего не нашли и написали что сайт полностью чист. Если ваш сайт будет заражен известным вирусом то онлайн-антивирусы для проверки сайтов покажут его название и укажут на проблемый код который надо удалить.
- Так как первый пункт ничего не показал, пришлось искать подозрительный код самостоятельно, для этого открываем страницу в любом браузере и ищем опцию «просмотреть исходный код страницы», в коде ищем куски javascript, ссылки и другие подозрительные вещи которых там быть не должно. Подозрительный кусок я нашел практически сразу, это оказался код javascript реализующий поддержку эмоджи, который появился в новой версии WordPress 4.2 после очередного обновления движка.
- Удаляем подозрительный код или код вируса, так как под подозрение попал стандартный код WordPress то для его удаления нужно отключить эмоджи, сделать это можно двумя способами.
Подозрительный код выглядит так:
<script type=»text/javascript»>
window._wpemojiSettings = {«baseUrl»:»https:\/\/s.w.org\/images\/core\/emoji\/72×72\/»,»ext»:».png»,»source»:{«concatemoji»:»https:\/\/alpograd.ru\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.2.1″}};
!function(a,b,c){function d(a){var c=b.createElement(«canvas»),d=c.getContext&&c.getContext(«2d»);return d&&d.fillText?(d.textBaseline=»top»,d.font=»600 32px Arial»,»flag»===a?(d.fillText(String.fromCharCode(55356,56812,55356,56807),0,0),c.toDataURL().length>3e3):(d.fillText(String.fromCharCode(55357,56835),0,0),0!==d.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement(«script»);c.src=a,c.type=»text/javascript»,b.getElementsByTagName(«head»)[0].appendChild(c)}var f;c.supports={simple:d(«simple»),flag:d(«flag»)},c.supports.simple&&c.supports.flag||(f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
</script>
Первый способ удаления эмоджи на WordPress 4.2 с помощью плагина.
Находим и ставим плагин под названием «Disable Emojis», этот способ самый простой и быстрый, но мне он почему-то не помог, код продолжил появляться в заголовке страниц, в чем проблема я разбираться не стал и использовал второй способ.
Второй способ удаления эмоджи на WordPress 4.2
Необходимо отредактировать файл functions.php вашей темы, обычно это можно сделать из админки WordPress, если не получается то придется использовать FTP-клиент. В него в любое место (я для верности добавил в начало файла) надо добавить строки:
remove_action( ‘wp_head’, ‘print_emoji_detection_script’, 7 );
remove_action( ‘admin_print_scripts’, ‘print_emoji_detection_script’ );
remove_action( ‘wp_print_styles’, ‘print_emoji_styles’ );
remove_action( ‘admin_print_styles’, ‘print_emoji_styles’ );
Что бы получилось вот так (нужное выделено красным):
После этого жмем сохранить и проверяем исходный код страницы — подозрительный javascript больше не должен подгружаться.
Если вы используете плагины кеширования — для устранения проблем сбросьте кеш перед проверкой исходного кода страницы.
После удаления эмоджи, я написал Гуглу что код удален и запросил повторную проверку сайта на вредоносный код, менее чем через сутки в Вебмастер тулс пришло сообщение что вредоносный код на моем сайте не найден:
Спасибо, у меня та же беда, кстати, в блоге кто на новенького последняя статья по той же проблеме, и он предлагает больше строк вписать для решения проблемы
remove_action( ‘wp_head’, ‘print_emoji_detection_script’, 7 );
remove_action( ‘admin_print_scripts’, ‘print_emoji_detection_script’ );
remove_action( ‘wp_print_styles’, ‘print_emoji_styles’ );
remove_action( ‘admin_print_styles’, ‘print_emoji_styles’ );
remove_filter( ‘the_content_feed’, ‘wp_staticize_emoji’ );
remove_filter( ‘comment_text_rss’, ‘wp_staticize_emoji’ );
remove_filter( ‘wp_mail’, ‘wp_staticize_emoji_for_email’ );
Гугл уже не считает код эмоджи подозрительным, так что отключать их не обязательно.
После обновления шаблона, тоже заметил странный яваскрипт, спасибо за способ, помог
Пожалуйста, а у Вас сработал плагин или пришлось руками править код? У меня с плагином ничего не получилось, пришлось править тему, причем пробовал на нескольких сайтах с Вордпрессом.
Мне помогли 4 строчки в functions.php на двух сайтах. А вообще я заянлся «уборкой» кода в хедере, по возможности убрал яву в футер и оптимизировал код. Теперь страницы грузятся быстрее