WooCommerce сигурност: как да предпазите магазина от хакване
Практичен наръчник за сигурността на WooCommerce магазин: къде е реалният риск, кои мерки се правят за един ден и какво да направите, ако все пак ви хакнат.
Хакнатият блог е неприятност. Хакнатият онлайн магазин е проблем с пари, лични данни и доверие: в базата стоят имена, адреси, телефони и история на поръчки на хиляди клиенти, а checkout страницата е идеалното място за някой, който иска да краде данни за карти или да тества откраднати карти за ваша сметка. Затова WooCommerce сигурност не е тема само за програмисти, а за всеки собственик на магазин.
В тази статия ще видите откъде реално идват атаките срещу WooCommerce, кои защити имат най-голям ефект при най-малко усилие, как да подсигурите плащанията и какво се прави в първите часове след пробив – включително задълженията ви по GDPR.
Накратко:
- Повечето пробиви в WordPress и WooCommerce идват от остарели или изоставени плъгини и теми, а не от ядрото на WordPress.
- Ако плащането с карта минава през страница или поле на банката или платежния доставчик, данните за картата не се съхраняват във вашата база, което значително намалява риска.
- Двуфакторна защита за всички администратори, минимални права за служителите и редовни архиви извън сървъра са базовият минимум.
- Атаките с тестване на карти през checkout се ограничават с CAPTCHA, лимит на опитите и защитна стена (WAF).
- При изтичане на лични данни GDPR изисква уведомяване на КЗЛД в срок до 72 часа от узнаването, когато има риск за клиентите.
Откъде идват атаките срещу WooCommerce магазини
WordPress движи огромна част от интернет, затова атаките са автоматизирани: ботове сканират милиони сайтове за известни уязвимости и пробват всичко, което намерят. Никой не „избира“ точно вашия магазин – просто сте в списъка. Най-честите входни точки са:
- Уязвими плъгини и теми. Плъгин за филтри, слайдер или форма, който не е обновяван от година, е най-вероятният път за пробив. Особено опасни са „nulled“ (разбити платени) версии, които често идват с вграден зловреден код.
- Слаби или повторно използвани пароли. Брутфорс атаките срещу /wp-login.php и xmlrpc.php работят денонощно.
- Твърде много администратори. Бивш служител или външен подизпълнител с активен акаунт е отворена врата.
- Евтин споделен хостинг без изолация. Ако съседен сайт на същия акаунт бъде компрометиран, заразата се пренася.
- Checkout като мишена. Ботове използват формата за поръчка, за да проверяват дали откраднати карти са валидни. Последствията за вас са такси, спорни плащания и проблеми с платежния доставчик.
Защита за един ден: базовият чеклист
Това са мерките, които правим при всеки нов WooCommerce проект. Повечето не изискват програмиране.
Обновявания и почистване
- Обновете WordPress, WooCommerce, темата и всички плъгини. Преди това направете архив и, ако е възможно, тествайте на staging копие.
- Изтрийте (не само деактивирайте) плъгини и теми, които не ползвате. Деактивиран плъгин остава на сървъра и може да бъде атакуван.
- Проверете кога е последното обновяване на всеки плъгин в официалната директория. Ако е преди повече от година и има алтернатива – сменете го.
- Използвайте поддържана версия на PHP. Хостингът трябва да позволява смяна от панела.
Акаунти и достъп
- Включете двуфакторна защита (2FA) за всички с роля „Администратор“ и „Управител на магазин“.
- Дайте на служителите ролята, която им трябва: за обработка на поръчки стига „Управител на магазин“, не „Администратор“.
- Ограничете опитите за вход и, ако не ползвате мобилни приложения или външни интеграции, които разчитат на него, изключете XML-RPC.
- Не използвайте потребителско име „admin“ и проверете дали в списъка с потребители няма непознати администратори.
Сървър и конфигурация
- Задължителен HTTPS на целия сайт, не само на checkout.
- В wp-config.php добавете
DISALLOW_FILE_EDIT, за да не може през админ панела да се редактира код на теми и плъгини. - Сменете стандартния префикс на таблиците само при нова инсталация – на работещ магазин рискът от грешка е по-голям от ползата.
- Защитна стена на ниво сървър или CDN (например Cloudflare) спира голяма част от ботовете още преди да стигнат до WordPress.
Плащания и checkout: най-чувствителната част
Добрата новина е, че при правилна настройка вашият сървър изобщо не вижда номера на картата. Българските решения като Borica (през банката), myPOS, ePay, както и Stripe, работят или с пренасочване към тяхна страница, или с вградени полета, които се зареждат от сървъра на доставчика. Така отговорността за картовите данни е основно при тях. Повече за избора на доставчик има в статията ни за плащане с карта в WooCommerce.
| Риск | Как изглежда | Мярка |
|---|---|---|
| Тестване на карти | Десетки малки неуспешни плащания за минути, често от чужди IP адреси | CAPTCHA или проверка за бот на checkout, лимит на опитите, WAF правила |
| Скимер код (Magecart тип) | Чужд JavaScript в страницата за плащане, който копира въведените данни | Минимум скриптове на checkout, мониторинг за промени във файловете, плащане през страница на доставчика |
| Фалшиви поръчки с наложен платеж | Поръчки с несъществуващи адреси и телефони | Потвърждение по телефон или SMS при съмнение, филтри по история на клиента |
| Изтичане на API ключове | Ключове на платежния модул или куриера, споделени в имейл или оставени в публичен файл | Отделни ключове за тест и продукция, смяна при напускане на служител или агенция |
Ако забележите вълна от неуспешни плащания, временно включете по-строга проверка на checkout и уведомете платежния доставчик. Колкото по-рано реагирате, толкова по-малко са таксите и риска от ограничаване на акаунта.
Плъгини за сигурност: какво реално правят
Плъгин за сигурност не замества обновяванията, но добавя наблюдение. Най-използваните са Wordfence, Sucuri Security и Solid Security. Основните им функции:
- защитна стена на ниво приложение и блокиране на известни зловредни заявки;
- сканиране на файловете за променен или зловреден код;
- ограничаване на опитите за вход и 2FA;
- известия при нов администратор или промяна в ядрото.
Изберете един плъгин за сигурност. Два едновременно често се конфликтират и забавят сайта. Ако магазинът ви вече е бавен, първо прегледайте статията за бавен WooCommerce магазин – някои „тежки“ скенери е по-добре да се пускат по график, а не постоянно.
Архиви: последната линия на защита
Ако всичко друго се провали, архивът решава дали ще загубите час или седмица. За магазин правилата са по-строги, отколкото за обикновен сайт, защото поръчките се променят всеки ден.
- Честота: базата данни поне веднъж дневно, при много поръчки – на няколко часа. Файловете – седмично и преди всяко обновяване.
- Място: поне едно копие извън сървъра (облачно хранилище), а не само в същия хостинг акаунт.
- Срок: пазете поне 30 дни история. Зловреден код понякога стои седмици, преди да бъде забелязан.
- Тест: веднъж на тримесечие възстановете архива на тестов адрес. Архив, който никога не е възстановяван, е предположение, а не архив.
Качественият хостинг прави голяма част от това автоматично. Какво да търсите в оферта на хостинг, обясняваме в статията за хостинг за WooCommerce.
Хакнаха ви: какво да направите в първите 24 часа
Признаците обикновено са пренасочвания към чужди сайтове, нови непознати администратори, спам страници в Google или предупреждение в Google Search Console. Действайте в този ред:
- Пуснете режим на поддръжка и сменете паролите на всички администратори, хостинга, FTP/SFTP и базата данни.
- Свържете се с хостинга – често те имат логове и могат да кажат откъде е влязъл нападателят.
- Не трийте нищо прибързано. Направете копие на заразеното състояние за анализ, след това почистете или възстановете от чист архив.
- Сменете ключовете на платежните модули, куриерските интеграции и солите (salts) в wp-config.php.
- Затворете уязвимостта – обновете или премахнете плъгина, през който е станал пробивът. Без тази стъпка ще ви хакнат отново.
- Преценете дали са изтекли лични данни. Ако има риск за клиентите, GDPR изисква уведомяване на Комисията за защита на личните данни до 72 часа, а при висок риск – и на засегнатите лица.
- Поискайте преглед в Search Console, ако Google е маркирал сайта като опасен.
Рутина за поддръжка: седмица, месец, тримесечие
| Честота | Задача |
|---|---|
| Всяка седмица | Обновявания на плъгини след архив, преглед на известията от плъгина за сигурност |
| Всеки месец | Преглед на потребителите и ролите, проверка за неизползвани плъгини, тест на checkout с реално плащане |
| На тримесечие | Тестово възстановяване на архив, смяна на ключове при промени в екипа, преглед на PHP версията |
Ако обновяванията ви плашат, защото „нещо винаги се чупи“, прочетете как да ги правите безопасно в статията за обновяване на WooCommerce. Именно страхът от обновяване държи много магазини на уязвими версии месеци наред.
Често задавани въпроси
Безопасен ли е WooCommerce за онлайн магазин?
Да, ядрото на WooCommerce се поддържа активно и бързо получава поправки. Рискът идва основно от поддръжката: остарели плъгини, слаби пароли и лош хостинг. Добре поддържан WooCommerce магазин е сигурен колкото повечето платформи.
Съхранява ли WooCommerce данните за картите на клиентите?
Не, при стандартна настройка с Borica, myPOS, ePay или Stripe номерът на картата се въвежда при доставчика и не стига до вашата база. В базата остават данни за поръчката и клиента, които също трябва да пазите.
Кой плъгин за сигурност е най-добър за WooCommerce?
Wordfence, Sucuri и Solid Security вършат подобна работа. По-важно е да ползвате само един, да е настроен правилно и да следите известията му, отколкото коя марка сте избрали.
Колко често трябва да обновявам WooCommerce и плъгините?
Поне веднъж седмично, а при обявена сериозна уязвимост – веднага. Винаги правете архив преди обновяване и по възможност тествайте на staging копие.
Ако искате външен поглед върху сигурността и поддръжката на вашия магазин, можем да прегледаме плъгините, хостинга и архивите и да ви кажем какво да оправите първо. Вижте как работим с WooCommerce магазини или пишете ни за безплатен преглед.
