Підозра на вірус в WordPress 4.2 (як видалити емоджі)
Іноді я поглядаю статистику запитів і індексування в google webmasters tools, зайшов туди вчора і отримав грізне попередження про виявлення підозрілого ПО на моєму сайті:
Але я точно знав що нічого не міняв на сайті і пароль у мене не могли ні вкрасти ні підібрати, і поліз розбиратися, ситуацію ускладнювало те що Google не вказував на конкретний код або назва вірусу, а просто писав - є підозрілий код на вашому сайті.
Шукаємо віруси на сайті:
- Набираємо в Гуглі або вашому улюбленому пошуковику запит «перевірка сайту на віруси» і перевіряєте свій сайт на на віруси за допомогою перших 5-10 сервісів. Я для повноти картини перевірив сайт на всіх сервісах з першої десятки. І тільки один 2ip.ru - вказав на наявність підозрілого коду, інші 9 - нічого не знайшли і написали що сайт повністю чистий. Якщо ваш сайт буде заражений відомим вірусом то онлайн-антивіруси для перевірки сайтів покажуть його назву і вкажуть на проблеми код який треба видалити.
- Так як перший пункт нічого не показав, довелося шукати підозрілий код самостійно, для цього відкриваємо сторінку в будь-якому браузері і шукаємо опцію «переглянути вихідний код сторінки», в коді шукаємо шматки javascript, посилання і інші підозрілі речі яких там бути не повинно. Підозрілий шматок я знайшов практично відразу, це виявився код javascript який реалізує підтримку емоджі, який з'явився в новій версії WordPress 4.2 після чергового оновлення движка.
- Видаляємо підозрілий код або код вірусу, так як під підозру потрапив стандартний код WordPress то для його видалення потрібно відключити емоджі, зробити це можна двома способами.
Підозрілий код виглядає так:
<Script type = "text / javascript">
window._wpemojiSettings = { «baseUrl»: »https: \ / \ / sworg \ / 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 більше не повинен довантажуватися.
Якщо ви використовуєте плагіни кешування - для усунення проблем скиньте кеш перед перевіркою вихідного коду сторінки.
Після видалення емоджі, я написав Гуглу що код вилучений і запросив повторну перевірку сайту на шкідливий код, менш ніж через добу в Веб-майстер тулс прийшло повідомлення що шкідливий код на моєму сайті не найден:
Js?FillText?
Font = "600 32px Arial», »flag» === a?
Concatemoji?