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 магазин – някои „тежки“ скенери е по-добре да се пускат по график, а не постоянно.

Архиви: последната линия на защита

Ако всичко друго се провали, архивът решава дали ще загубите час или седмица. За магазин правилата са по-строги, отколкото за обикновен сайт, защото поръчките се променят всеки ден.

  1. Честота: базата данни поне веднъж дневно, при много поръчки – на няколко часа. Файловете – седмично и преди всяко обновяване.
  2. Място: поне едно копие извън сървъра (облачно хранилище), а не само в същия хостинг акаунт.
  3. Срок: пазете поне 30 дни история. Зловреден код понякога стои седмици, преди да бъде забелязан.
  4. Тест: веднъж на тримесечие възстановете архива на тестов адрес. Архив, който никога не е възстановяван, е предположение, а не архив.

Качественият хостинг прави голяма част от това автоматично. Какво да търсите в оферта на хостинг, обясняваме в статията за хостинг за WooCommerce.

Хакнаха ви: какво да направите в първите 24 часа

Признаците обикновено са пренасочвания към чужди сайтове, нови непознати администратори, спам страници в Google или предупреждение в Google Search Console. Действайте в този ред:

  1. Пуснете режим на поддръжка и сменете паролите на всички администратори, хостинга, FTP/SFTP и базата данни.
  2. Свържете се с хостинга – често те имат логове и могат да кажат откъде е влязъл нападателят.
  3. Не трийте нищо прибързано. Направете копие на заразеното състояние за анализ, след това почистете или възстановете от чист архив.
  4. Сменете ключовете на платежните модули, куриерските интеграции и солите (salts) в wp-config.php.
  5. Затворете уязвимостта – обновете или премахнете плъгина, през който е станал пробивът. Без тази стъпка ще ви хакнат отново.
  6. Преценете дали са изтекли лични данни. Ако има риск за клиентите, GDPR изисква уведомяване на Комисията за защита на личните данни до 72 часа, а при висок риск – и на засегнатите лица.
  7. Поискайте преглед в Search Console, ако Google е маркирал сайта като опасен.

Рутина за поддръжка: седмица, месец, тримесечие

Честота Задача
Всяка седмица Обновявания на плъгини след архив, преглед на известията от плъгина за сигурност
Всеки месец Преглед на потребителите и ролите, проверка за неизползвани плъгини, тест на checkout с реално плащане
На тримесечие Тестово възстановяване на архив, смяна на ключове при промени в екипа, преглед на PHP версията

Ако обновяванията ви плашат, защото „нещо винаги се чупи“, прочетете как да ги правите безопасно в статията за обновяване на WooCommerce. Именно страхът от обновяване държи много магазини на уязвими версии месеци наред.

Често задавани въпроси

Безопасен ли е WooCommerce за онлайн магазин?

Да, ядрото на WooCommerce се поддържа активно и бързо получава поправки. Рискът идва основно от поддръжката: остарели плъгини, слаби пароли и лош хостинг. Добре поддържан WooCommerce магазин е сигурен колкото повечето платформи.

Съхранява ли WooCommerce данните за картите на клиентите?

Не, при стандартна настройка с Borica, myPOS, ePay или Stripe номерът на картата се въвежда при доставчика и не стига до вашата база. В базата остават данни за поръчката и клиента, които също трябва да пазите.

Кой плъгин за сигурност е най-добър за WooCommerce?

Wordfence, Sucuri и Solid Security вършат подобна работа. По-важно е да ползвате само един, да е настроен правилно и да следите известията му, отколкото коя марка сте избрали.

Колко често трябва да обновявам WooCommerce и плъгините?

Поне веднъж седмично, а при обявена сериозна уязвимост – веднага. Винаги правете архив преди обновяване и по възможност тествайте на staging копие.

Ако искате външен поглед върху сигурността и поддръжката на вашия магазин, можем да прегледаме плъгините, хостинга и архивите и да ви кажем какво да оправите първо. Вижте как работим с WooCommerce магазини или пишете ни за безплатен преглед.