Сайт на WordPress зламують не тому, що він комусь «потрібен». Його знаходять автоматичні сканери, які шукають застарілі плагіни і слабкі паролі на мільйонах сайтів одночасно. Тому злам — це не питання «чи», а «коли», якщо сайт не обслуговується. Нижче — покроковий план, що робити, коли це вже сталося, і як не опинитися тут вдруге.
Про профілактику і причини, чому ламають саме малий бізнес, — у статті безпека сайту для бізнесу. Тут — саме план дій при зламі.
Ознаки, що сайт зламали
Злам часто непомітний для власника, бо шкідливий код показує себе не всім. Перевірте:
| Ознака | Як перевірити |
|---|---|
| Редирект на казино, аптеки, «знайомства» | Відкрийте сайт з телефона через мобільний інтернет і з пошуку Google, а не з закладки |
| Спам-сторінки в Google | Пошук site:вашдомен.ua — шукайте чужі товари, ієрогліфи, дивні URL |
| Попередження в браузері чи пошуку | «Сайт може бути зламаний» у видачі, червоний екран у Chrome |
| Нові адміністратори | WordPress → Користувачі, фільтр «Адміністратор» |
| Чужі PHP-файли | Папка wp-content/uploads — там не має бути файлів .php |
| Лист від хостингу | Блокування за шкідливий код або розсилку спаму |
| Повідомлення в Search Console | Розділ «Проблеми з безпекою» і «Заходи, вжиті вручну» |
| Повільна робота, навантаження на сервер | Статистика хостингу, невідомі процеси й завдання cron |
Важливо: шкідливий код часто показує редирект лише відвідувачам із Google або лише з мобільних, а адміністратора, який зайшов в адмінку, не чіпає. Тому «у мене все відкривається» — не доказ, що сайт чистий.
Перші 60 хвилин: що робити одразу
- Не видаляйте нічого навмання. Спершу зробіть повну копію поточного стану — файлів і бази. Вона знадобиться, щоб зрозуміти, як зламали.
- Закрийте сайт від відвідувачів режимом обслуговування або обмеженням доступу на рівні хостингу, якщо він роздає шкідливий код. Так ви захистите клієнтів і репутацію в Google.
- Змініть паролі з чистого компʼютера: хостинг-панель, FTP/SFTP, база даних, усі адміністратори WordPress, пошта, привʼязана до адмінки.
- Перевірте адміністраторів і видаліть незнайомих.
- Напишіть хостингу. Багато хостингів мають сканер і логи доступу — вони покажуть, через що зайшли.
- Знайдіть останній чистий бекап. Відновлення з нього — найшвидший шлях, але лише разом із закриттям причини.
Якщо бекапів немає або вони лежать на тому ж сервері, що й сайт, — це окрема проблема. Див. резервне копіювання сайту.
Очищення: покроковий план
Крок 1. Замініть ядро WordPress чистою копією
Завантажте ту саму версію WordPress з офіційного сайту і замініть папки wp-admin і wp-includes та файли в корені, крім wp-config.php. Ядро не має містити ваших змін — усе, що відрізняється від оригіналу, підозріле.
Крок 2. Перевірте wp-config.php і .htaccess
У wp-config.php шукайте незнайомий код на початку чи в кінці файлу, підключення сторонніх файлів, закодовані рядки (base64_decode, eval, gzinflate). У .htaccess — редиректи на чужі домени, особливо з умовами на мобільні браузери чи реферер Google.
Крок 3. Перевстановіть теми і плагіни
Видаліть кожен плагін і тему і поставте свіжі копії з офіційних джерел. Невикористовувані — видаліть зовсім. «Обнулені» (піратські) плагіни і теми — одна з найчастіших причин зламу: у них бекдор закладений із самого початку.
Крок 4. Перевірте uploads
У wp-content/uploads мають бути зображення і документи. Будь-які .php, .phtml, дивні .ico чи .js у папках за роками — видаляйте після перевірки. Додатково варто заборонити виконання PHP у цій папці на рівні сервера.
Крок 5. Перевірте базу даних
Шкідливий код ховається і в базі:
- таблиця
options— підозрілі значення вsiteurl,home, автозавантажуваних опціях; posts— вставлені скрипти, приховані посилання, тисячі спам-сторінок;usersіusermeta— приховані адміністратори;- завдання cron, які знову створюють шкідливі файли.
Крок 6. Змініть ключі безпеки
Згенеруйте нові ключі й солі в wp-config.php — це завершить усі активні сесії, включно з сесіями зловмисника.
Крок 7. Перевірте результат
Проскануйте сайт ще раз, відкрийте його з мобільного інтернету і з пошуку Google, перевірте, що нові PHP-файли не зʼявляються протягом кількох днів.
Google: як прибрати наслідки зламу з пошуку
- Search Console → «Проблеми з безпекою». Перевірте приклади URL, які вказав Google.
- Спам-сторінки видаліть і віддавайте для них 404 або 410, а не редирект на головну.
- Перевірте
robots.txtі sitemap — зловмисники інколи додають туди свої сторінки. - Надішліть запит на повторну перевірку з коротким описом: що знайшли, що видалили, як закрили причину.
- Стежте за індексацією кілька тижнів: спам-сторінки зникають із видачі поступово.
Як працювати з Search Console — у статті Google Search Console для початківців. Якщо після зламу просіли позиції — див. трафік упав: як знайти причину.
Як не допустити повторного зламу
| Захід | Навіщо |
|---|---|
| Оновлення ядра, тем і плагінів | Більшість зламів — через відомі вразливості старих версій |
| Мінімум плагінів | Кожен плагін — чужий код на вашому сервері |
| Двофакторна автентифікація для адмінів | Вкрадений пароль сам по собі не дає входу |
| Обмеження спроб входу, нестандартний логін | Захист від перебору паролів |
Заборона PHP в uploads |
Завантажений бекдор не запуститься |
| Заборона редагування файлів з адмінки | DISALLOW_FILE_EDIT у wp-config.php |
| Підтримувана версія PHP | Старий PHP — ще одна дірка і проблеми з оновленнями |
| Бекапи поза сервером | Відновлення без переговорів зі зловмисником |
| Моніторинг доступності й змін файлів | Ви дізнаєтесь про злам першими, а не від клієнтів |
| Захист форм від ботів | Див. спам у формах |
Граблі з практики. Плагін-фаєрвол Wordfence у режимі розширеного захисту має завантажуватися раніше за WordPress через параметр PHP auto_prepend_file. На одному з українських хостингів ми налаштовували це через .user.ini і .htaccess — файли записані, сайт працює, а рівень захисту лишається базовим. Причина: цей хостинг читає параметр лише з власної панелі налаштувань PHP. Висновок: після будь-якого налаштування захисту перевіряйте, що він реально увімкнувся, а не що «файл збережено».
Чого не робити після зламу
- Не платіть зловмисникам. Якщо вимагають викуп за сайт чи базу, оплата не гарантує нічого, крім того, що вас запамʼятають як платоспроможного.
- Не обмежуйтеся плагіном-сканером. «Сканер нічого не знайшов» не означає «сайт чистий»: код у базі і в cron сканери пропускають часто.
- Не відновлюйте бекап без закриття причини. Відновили — і через день те саме, бо вразливий плагін нікуди не подівся.
- Не міняйте паролі з зараженого компʼютера. Якщо пароль украли кейлогером, новий пароль піде туди ж.
- Не мовчіть, якщо витекли дані клієнтів. Якщо зловмисник міг отримати доступ до бази клієнтів, оцініть ризики і повідомте тих, кого це стосується.
Що злам коштує бізнесу
Злам — це не лише години на очищення. Бізнес втрачає:
- Заявки і продажі за час, поки сайт закритий або перенаправляє на казино.
- Позиції в Google: спам-сторінки, попередження в пошуку і ручні заходи відкидають сайт назад на тижні.
- Рекламу: Google Ads і Meta зупиняють оголошення, що ведуть на сайт зі шкідливим кодом.
- Пошту: якщо з сервера розсилали спам, листи компанії починають падати в спам у клієнтів.
- Довіру: клієнт, якого сайт перекинув на шахрайську сторінку, не повертається.
Порівняйте ці втрати з вартістю регулярного обслуговування: оновлення, бекапи і моніторинг коштують менше за один серйозний злам. Скільки коштує підтримка — у статті підтримка сайту: скільки коштує.
Коли варто не лікувати, а переробити
Інколи очищення — це латання старого будинку. Сигнали, що час думати про новий сайт:
- тема не оновлюється роками, а PHP на хостингу вже не підтримується;
- плагінів десятки, і половину ніхто не памʼятає, навіщо поставили;
- злам повторюється;
- сайт повільний і застарілий, і його все одно доведеться переробляти.
Так було в стоматологічної клініки IDEALE: шаблонна тема WordPress на непідтримуваній версії PHP і блог із трьома записами 2021 року. Замість латання ми зробили новий сайт із власною адмінкою, де команда сама редагує вміст, а аудит безпеки увійшов в обсяг робіт ще до запуску. Сайт і адмінка працюють у хмарному акаунті самої клініки.
Про вибір технології — у статті WordPress чи Next.js.
Чек-лист для власника
- Зроблено копію поточного стану перед очищенням
- Змінено всі паролі: хостинг, FTP, база, адміни, пошта
- Видалено незнайомих адміністраторів
- Ядро, теми і плагіни замінено чистими копіями
- Перевірено
wp-config.php,.htaccess,uploads, базу, cron - Згенеровано нові ключі безпеки
- Сайт перевірено з мобільного і з пошуку Google
- Надіслано запит на повторну перевірку в Search Console
- Оновлено все, видалено зайві плагіни, увімкнено 2FA
- Налаштовано бекапи поза сервером і моніторинг
Головне
При зламі спершу зберігаємо копію і зупиняємо шкоду, потім чистимо ядро, теми, плагіни, uploads і базу, змінюємо всі паролі і ключі, і лише після цього просимо Google перевірити сайт. Найважливіше — знайти і закрити причину, інакше злам повториться через тиждень.
Якщо сайт уже зламали або ви підозрюєте, що з ним щось не так, ми в Obliko проводимо аудит безпеки й очищення сайту, а якщо латати вже нема чого — робимо розробку сайту під ключ з безпекою в базовому обсязі робіт. Надішліть адресу сайту і що саме ви помітили — скажемо, з чого почати.
Як зрозуміти, що сайт на WordPress зламали?
Типові ознаки: редиректи на сторонні сайти (часто лише з мобільного або лише з Google), спам-сторінки з чужими товарами в пошуку, нові адміністратори в WordPress, незнайомі файли PHP у папці uploads, попередження Google «Сайт може бути зламаний», лист хостингу про шкідливий код або розсилку спаму, різке падіння позицій.
Чи допоможе плагін безпеки очистити зламаний сайт?
Плагін-сканер допомагає знайти частину заражених файлів, але не гарантує очищення: шкідливий код ховається в базі даних, у файлах теми, у завданнях cron і в нових адміністраторах. Надійний шлях — замінити ядро, теми і плагіни чистими копіями, вручну перевірити uploads, базу і користувачів, змінити всі паролі й ключі, а потім закрити причину зламу.
Скільки часу займає очищення сайту після зламу?
Простий випадок із чистим бекапом — кілька годин. Якщо бекапу немає, зараження давнє і Google уже показує попередження, — від одного до кількох днів на очищення плюс від кількох днів на перевірку Google після запиту на повторний розгляд.
Чому сайт зламують повторно після очищення?
Бо прибрали наслідки, а не причину: лишилася вразлива версія плагіна чи теми, не змінили паролі до хостингу і FTP, не знайшли бекдор у uploads або в базі, лишили зайвого адміністратора. Після очищення обовʼязково оновлюють усе, видаляють невикористовувані плагіни і вмикають захист входу.
Як зняти попередження Google про зламаний сайт?
Після повного очищення відкрийте Google Search Console, розділ «Проблеми з безпекою», перевірте, що всі вказані URL більше не містять шкідливого вмісту, і надішліть запит на повторну перевірку з описом, що саме зроблено. Видаліть спам-сторінки або віддавайте для них код 404/410.
Потрібен сайт під ключ?
Від структури й дизайну до запуску. Домен і доступи оформлюємо на вашу компанію.