Модул 6 · 6.2
Актуализации, резервни копия и роли
Модул 6: Управление и сигурност · Време за четене: 11 минути
Учебна цел: След този урок ще можете да актуализирате магазин с WooCommerce и да правите резервни копия, без да губите поръчки, и да разпределяте правата така, че всеки да може само това, което му е необходимо.
Основни понятия: голяма и малка актуализация, актуализация на базата данни, разширения и съвместимост, презаписване на шаблони (template overrides), остарели шаблони, резервно копие преди актуализацията, поръчки между резервното копие и възстановяването, таблици на HPOS, роли Мениджър на магазина (Shop manager) и Клиент (Customer), минимални права, показване на версии, xmlrpc.php
Защо магазинът се различава от обикновения сайт
В курса за WordPress (уроци 7.2, 8.1 и 8.2) е обяснено как се актуализира WordPress, как се правят резервни копия и как се възстановяват. За магазина всичко това важи, с една голяма разлика: базата данни се променя през целия ден. В нея постъпва всяка поръчка, всеки клиент, всяка промяна в наличностите и всяко плащане. При информационен сайт с резервно копие от вчера губите най-много една публикация. При магазин губите поръчки, които вече са платени.
Затова в този урок има две основни правила:
- При магазин възстановяването е последната стъпка, а не първата.
- Актуализирайте по план, а не "набързо между другото в петък следобед".
Актуализации на WooCommerce
WooCommerce редовно пуска нови версии, а между тях и малки поправки. Номерът на версията има три части, например 11.2.2. Промяна в последното число означава малка поправка или актуализация за сигурност. Промяна в първото или второто число носи нови функции, а понякога и промени, към които разширенията или Вашата тема трябва да се приспособят.
При актуализация на WooCommerce се случват три неща, които при обикновено разширение се виждат по-рядко:
- Актуализация на базата данни. Понякога WooCommerce трябва да промени таблиците. Тогава в администрацията виждате съобщение, че базата данни се актуализира. Това става във фонов режим чрез планираните действия (урок 7.3). Не го прекъсвайте и проверете в WooCommerce > Състояние дали е приключило.
- Разширенията трябва да вървят в крак. Разширенията за плащане, връзките с куриери и със счетоводни програми посочват до коя версия на WooCommerce са тествани. В екрана с разширенията виждате предупреждение, ако дадено разширение не споменава по-новата версия. Прочетете промените в разширението си за плащане, преди да актуализирате: повредено разширение за плащане означава магазин, който не продава.
- Презаписване на шаблони. Много теми имат собствени копия на шаблоните на WooCommerce (папката
woocommerce/в темата). Ако WooCommerce промени оригинала, копието става остаряло. В WooCommerce > Състояние (Състояние на системата) най-долу при темата е посочено кои шаблони тя презаписва и кои от тях са остарели. В остарелите шаблони може да липсват нови полета или да възникват грешки. Актуализирайте темата или помолете автора ѝ за актуализация.
Малките актуализации (последното число) е добре да прилагате бързо, най-добре автоматично, защото често поправят пропуски в сигурността. Големите актуализации първо тествайте в тестова среда (staging, урок 7.3), в спокоен момент и с резервно копие, направено непосредствено преди това.
Резервни копия: какво изчезва при възстановяване
Пример. Чайна Example от Утрехт (Холандия) прави резервно копие всяка нощ в 03.00 ч. Във вторник в 10.00 ч. администраторът актуализира WooCommerce и след това продуктовата страница показва грешка. Между 03.00 и 10.00 ч. са постъпили шест поръчки, платени чрез доставчика на плащания. Ако сега възстановите резервното копие от 03.00 ч.:
- тези шест поръчки изчезват от базата данни, макар парите да са при доставчика;
- магазинът вече не знае, че наличностите са по-малко;
- по-късно магазинът може да получи още известия (webhooks) от доставчика за поръчки, които не познава.
Затова:
- Правете резервно копие непосредствено преди актуализация, а не само през нощта. Така пропускът е възможно най-малък.
- При възстановяване запишете кои поръчки са постъпили след резервното копие (от имейлите "Нова поръчка" и от таблото на доставчика) и след това ги въведете отново ръчно или ги експортирайте предварително.
- По възможност възстановявайте само файловете (старата папка на разширението или темата), ако проблемът е в кода, и оставете базата данни непроменена. Често една актуализация може да се отмени, като инсталирате предишната версия на разширението. Курсът за WordPress, урок 8.2, показва как се възстановява избирателно. Ако актуализацията вече е обновила базата данни, старата версия може да не работи с нея: затова първо тествайте в тестова среда.
- Правете резервни копия по-често отколкото при обикновен сайт: магазин с поръчки през целия ден изисква резервно копие на базата данни поне веднъж дневно, по-добре по-често, и копие извън сървъра (правило 3-2-1, курс за WordPress, урок 8.1).
От WooCommerce 8.2 поръчките в новите магазини се съхраняват в собствени таблици (HPOS, урок 1.2), например wp_wc_orders. Разширение за резервни копия, което взема само "публикации" или избира таблиците по име, трябва да включва и тези таблици. При тестово възстановяване (курс за WordPress, урок 8.2) проверете дали поръчките наистина са там.
В WebOké услугата WebOké Backups прави резервно копие всяка нощ, което се съхранява 30 дни в друг център за данни (DA 16.1). Освен това преди актуализация можете сами да направите резервно копие в DirectAdmin или Installatron. При други хостинг доставчици това работи по подобен начин. Попитайте колко често и за колко време се пазят копията.
Роли: кой какво може
WooCommerce добавя две роли към WordPress (курс за WordPress, урок 3.3):
- Клиент (Customer): клиент с акаунт. Може да вижда само собствените си поръчки и данни. Никога не давайте на тази роля административни права.
- Мениджър на магазина (Shop manager): може да управлява продукти, поръчки, клиенти, купони и настройките на WooCommerce, но не може да инсталира разширения или да сменя темата.
За служители, които опаковат поръчки, отговарят на въпроси на клиенти или въвеждат продукти, ролята Мениджър на магазина е достатъчна. Администратор е само за човека, който отговаря за техническата част. Всеки служител трябва да има собствен акаунт с двуфакторно удостоверяване (курс за WordPress, урок 7.3), а не общ акаунт "магазин". Мениджърът на магазина вижда всички данни на клиентите, затова премахвайте акаунтите, когато някой напусне.
API ключовете (урок 2.4) също са вид права: давайте на една връзка само права за четене, ако тя няма нужда да записва, и изтривайте ключовете, които вече не се използват.
Какво показва Вашият магазин на всички
Нападателите търсят магазини със стара версия на WooCommerce или с разширение за плащане с известна уязвимост. По подразбиране WooCommerce поставя в изходния код реда <meta name="generator" content="WooCommerce 11.2.2">, а версията се вижда и след стиловете (?ver=). Скриването е малка печалба, а актуализирането е голяма. Магазин, който е редовно актуализиран, няма нужда да се тревожи особено за видим номер на версията. Магазин, който изостава, сам се издава.
Файлът xmlrpc.php е стара връзка, чрез която приложения влизат в WordPress. Той често се злоупотребява за отгатване на пароли. Ако не използвате приложение или услуга, която се нуждае от него, затворете го (в WebOké той е затворен по подразбиране, KB 169). Отворен xmlrpc.php отговаря на обикновена заявка от браузъра с "XML-RPC server accepts POST requests only." и статус 405. Затвореният дава 403 или 404.
Обобщение
- Базата данни на магазина се променя през целия ден: възстановяването струва поръчки, които вече са платени.
- Малките актуализации прилагайте бързо, големите първо в тестова среда; следете актуализацията на базата данни, разширенията и остарелите шаблони в WooCommerce > Състояние.
- Правете резервно копие непосредствено преди актуализация и по-често, отколкото при обикновен сайт; проверете дали таблиците с поръчки се включват.
- Служителите получават ролята Мениджър на магазина, а не Администратор; всеки със собствен акаунт и двуфакторно удостоверяване.
- Скриването на версиите помага малко, актуализирането помага много; затворете xmlrpc.php, ако не го използвате.
Тест (quiz)
Задача
Задача A6.2: Показва ли Вашият онлайн магазин версии? Въведете адреса на Вашия магазин, версията на WordPress (Табло > Актуализации) и версията на WooCommerce (Разширения). Програмата отваря началната страница и емисията (feed), както и файла /wp-content/plugins/woocommerce/readme.txt (само първите 2 kB, реда "Stable tag"). Тя търси номера на версии на WordPress и WooCommerce в редовете generator и след ?ver= при стиловете на WooCommerce и проверява в wordpress.org кои са най-новите версии. Зелено, ако Вашите версии са най-новите и видимото съответства на тях. Оранжево, ако остава само малка актуализация или ако версията е видима, но актуална. Червено, ако изоставате с голяма версия, ако видимата версия се различава от въведената от Вас (работи нещо друго, а не това, което мислите), или при невалидно въвеждане.
Задача A6.2b: Затворен ли е xmlrpc? Въведете адреса на Вашия магазин и отметнете, ако използвате приложение или услуга, която се нуждае от xmlrpc.php. Програмата изпраща заявка към /xmlrpc.php с обикновен GET, без да изпраща нищо. Зелено при 401, 403, 404, 410, пренасочване или обикновена HTML страница. Червено при 405 с текста "XML-RPC server accepts POST requests only." без отметка; оранжево, ако сте посочили, че Ви е необходим. Програмата проверява също дали списъкът с потребителски имена чрез /wp-json/wp/v2/users е публичен (оранжево, ако се виждат имена).
Зелената отметка означава, че тази проверка в момента е наред, а не че Вашият магазин е сигурен.
Прочетете още
Стъпките в панела се отнасят за WebOké; при други доставчици работи по подобен начин.
- Безплатен курс по WordPress 7.2: Следене на актуализациите
- Безплатен курс по WordPress 8.1: Резервни копия: какво, къде и колко често
- Безплатен курс по WordPress 8.2: Възстановяване и тестване
- Безплатен курс по WordPress 3.3: Потребители и роли @@OMSCHRИПИС@@
- Ръководство за DirectAdmin 16.1: Какви резервни копия има при WebOké
- WebOké Backups: преглед, възстановяване или изтегляне на резервно копие
- Няма достъп до xmlrpc.php в WordPress
- High Performance Order Storage (developer.woocommerce.com, на английски): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
