Aktualizacje, kopie zapasowe i role
Moduł 6: Zarządzanie i bezpieczeństwo · Czas czytania: 11 min
Cel lekcji: Po tej lekcji będą Państwo potrafili aktualizować sklep WooCommerce i tworzyć jego kopie zapasowe bez utraty zamówień, a także tak rozdzielać uprawnienia, aby każdy mógł robić tylko to, co jest mu potrzebne.
Kluczowe pojęcia: duża i mała aktualizacja, aktualizacja bazy danych, rozszerzenia i zgodność, nadpisania szablonów (template overrides), nieaktualne szablony, kopia zapasowa przed aktualizacją, zamówienia między kopią zapasową a przywróceniem, tabele HPOS, role Kierownik sklepu (Shop manager) i Klient (Customer), zasada minimalnych uprawnień, wyświetlanie wersji, xmlrpc.php
Dlaczego sklep różni się od zwykłej strony
W kursie WordPress (lekcje 7.2, 8.1 i 8.2) opisano, jak aktualizować WordPress, jak tworzyć kopie zapasowe i jak je przywracać. W sklepie obowiązuje to wszystko, z jedną dużą różnicą: baza danych zmienia się przez cały dzień. Trafia do niej każde zamówienie, każdy klient, każda zmiana stanu magazynowego i każda płatność. W przypadku strony informacyjnej przywrócenie wczorajszej kopii zapasowej oznacza utratę najwyżej jednego wpisu. W przypadku sklepu tracą Państwo zamówienia, które zostały już opłacone.
Dlatego w tej lekcji obowiązują dwie podstawowe zasady:
- W sklepie przywrócenie kopii zapasowej jest ostatnim krokiem, a nie pierwszym.
- Aktualizacje należy przeprowadzać według planu, a nie "na szybko w piątkowe popołudnie".
Aktualizacje WooCommerce
WooCommerce regularnie wydaje nowe wersje, a pomiędzy nimi drobne poprawki. Numer wersji składa się z trzech części, np. 11.2.2. Zmiana ostatniej liczby oznacza drobną poprawkę lub aktualizację bezpieczeństwa; zmiana pierwszej lub drugiej liczby wprowadza nowe funkcje, a czasem zmiany, do których muszą się dostosować rozszerzenia lub Państwa motyw.
Podczas aktualizacji WooCommerce zachodzą trzy rzeczy, które przy zwykłej wtyczce widać rzadziej:
- Aktualizacja bazy danych. Czasami WooCommerce musi zmodyfikować tabele. Widzą Państwo wtedy w panelu komunikat, że baza danych jest aktualizowana; odbywa się to w tle za pomocą zaplanowanych działań (lekcja 7.3). Prosimy tego nie przerywać i sprawdzić w WooCommerce > Status, czy proces się zakończył.
- Rozszerzenia muszą nadążać. Wtyczki płatności, integracje wysyłkowe i księgowe podają, do której wersji WooCommerce zostały przetestowane. Na ekranie wtyczek pojawia się ostrzeżenie, jeśli rozszerzenie nie wymienia nowszej wersji. Prosimy przeczytać listę zmian wtyczki płatności przed aktualizacją: wtyczka płatności, która przestaje działać, oznacza sklep, który nie sprzedaje.
- Nadpisania szablonów. Wiele motywów ma własne kopie szablonów WooCommerce (katalog
woocommerce/w motywie). Jeśli WooCommerce zmieni oryginał, kopia staje się nieaktualna. W WooCommerce > Status (Stan systemu) na dole, przy motywie, widać, które szablony motyw nadpisuje i które są nieaktualne. Nieaktualnym szablonom mogą brakować nowych pól lub mogą powodować błędy. Prosimy zaktualizować motyw albo poprosić jego autora o aktualizację.
Małe aktualizacje (ostatnia liczba) najlepiej instalować szybko, najlepiej automatycznie, ponieważ często naprawiają błędy bezpieczeństwa. Duże aktualizacje najpierw testuje się w środowisku testowym (staging, lekcja 7.3), w spokojnym momencie, z kopią zapasową wykonaną bezpośrednio przed aktualizacją.
Kopie zapasowe: co znika po przywróceniu
Przykład. Theehuis Example tworzy kopię zapasową każdej nocy o 03.00. We wtorek o 10.00 administrator aktualizuje WooCommerce, a potem strona produktu wyświetla błąd. Między 03.00 a 10.00 wpłynęło sześć zamówień, opłaconych za pośrednictwem operatora płatności. Jeśli teraz przywrócą Państwo kopię z 03.00, to:
- tych sześć zamówień zniknie z bazy danych, choć pieniądze są u operatora;
- sklep nie będzie już wiedział, że stan magazynowy jest niższy;
- sklep może później otrzymywać od operatora powiadomienia (webhooki) o zamówieniach, których nie zna.
Dlatego:
- Prosimy tworzyć kopię zapasową bezpośrednio przed aktualizacją, a nie tylko w nocy. Wtedy luka jest jak najmniejsza.
- Przy przywracaniu prosimy zanotować, które zamówienia wpłynęły po utworzeniu kopii (z e-maili "Nowe zamówienie" i panelu operatora płatności), a następnie wprowadzić je ręcznie lub wcześniej je wyeksportować.
- Najlepiej przywracać tylko pliki (stary katalog wtyczki lub motywu), jeśli problem tkwi w kodzie, a bazę danych pozostawić bez zmian. Aktualizację często można wycofać, instalując poprzednią wersję wtyczki; kurs WordPress, lekcja 8.2, pokazuje, jak przywracać wybiórczo. Jeśli aktualizacja zmodyfikowała już bazę danych, stara wersja może z nią już nie współpracować: dlatego najpierw należy testować w środowisku testowym.
- Kopie zapasowe należy tworzyć częściej niż w przypadku zwykłej strony: sklep, w którym zamówienia wpływają przez cały dzień, potrzebuje kopii bazy danych co najmniej raz dziennie, a najlepiej częściej, oraz kopii poza serwerem (zasada 3-2-1, kurs WordPress, lekcja 8.1).
Od WooCommerce 8.2 zamówienia w nowych sklepach są przechowywane we własnych tabelach (HPOS, lekcja 1.2), np. wp_wc_orders. Wtyczka do kopii zapasowych, która uwzględnia tylko "wpisy" lub wybiera tabele według nazwy, musi obejmować również te tabele. Podczas testowego przywracania (kurs WordPress, lekcja 8.2) prosimy sprawdzić, czy zamówienia rzeczywiście się w nim znajdują.
W WebOké usługa WebOké Backups tworzy każdej nocy kopię zapasową, przechowywaną przez 30 dni w innym centrum danych (DA 16.1); ponadto przed aktualizacją mogą Państwo samodzielnie utworzyć kopię w DirectAdmin lub Installatron. U innych dostawców hostingu działa to podobnie; prosimy zapytać, jak często i jak długo kopie są przechowywane.
Role: kto może co
WooCommerce dodaje do WordPress dwie role (kurs WordPress, lekcja 3.3):
- Klient (Customer): klient z kontem. Widzi tylko własne zamówienia i dane. Tej roli nigdy nie należy nadawać uprawnień administracyjnych.
- Kierownik sklepu (Shop manager): może zarządzać produktami, zamówieniami, klientami, kuponami i ustawieniami WooCommerce, ale nie może instalować wtyczek ani zmieniać motywu.
Dla pracowników, którzy pakują zamówienia, odpowiadają na pytania klientów lub wprowadzają produkty, rola Kierownik sklepu w zupełności wystarczy. Rola Administrator jest przeznaczona tylko dla osób zajmujących się techniką. Każdy pracownik powinien mieć własne konto z weryfikacją dwuetapową (kurs WordPress, lekcja 7.3); żadnego wspólnego konta "sklep". Kierownik sklepu widzi wszystkie dane klientów, dlatego prosimy usuwać konta osób, które odchodzą.
Klucze API (lekcja 2.4) to również forma uprawnień: integracji, która niczego nie musi zapisywać, prosimy nadawać tylko prawo odczytu, a nieużywane klucze usuwać.
Co Państwa sklep pokazuje wszystkim
Atakujący szukają sklepów ze starą wersją WooCommerce lub wtyczką płatności ze znaną luką. WooCommerce domyślnie umieszcza w kodzie źródłowym wiersz <meta name="generator" content="WooCommerce 11.2.2">, a wersja widoczna jest także za arkuszami stylów (?ver=). Ukrycie wersji to niewielki zysk; aktualizacja to zysk duży. Sklep, który jest na bieżąco, nie musi się zbytnio przejmować widocznym numerem wersji. Sklep, który jest zaległy, sam się zdradza.
Plik xmlrpc.php to stary interfejs, przez który aplikacje logują się do WordPress. Jest często wykorzystywany do odgadywania haseł. Jeśli nie korzystają Państwo z aplikacji ani usługi, która go potrzebuje, należy go zablokować (w WebOké jest domyślnie zablokowany, KB 169). Otwarty plik xmlrpc.php odpowiada na zwykłe żądanie w przeglądarce komunikatem "XML-RPC server accepts POST requests only." i statusem 405. Zablokowany zwraca 403 lub 404.
Podsumowanie
- Baza danych sklepu zmienia się przez cały dzień: przywrócenie kopii zapasowej oznacza utratę zamówień, które zostały już opłacone.
- Małe aktualizacje szybko, duże najpierw w środowisku testowym; prosimy zwracać uwagę na aktualizację bazy danych, rozszerzenia i nieaktualne szablony w WooCommerce > Status.
- Kopia zapasowa bezpośrednio przed aktualizacją i częściej niż w przypadku zwykłej strony; prosimy sprawdzić, czy obejmuje tabele zamówień.
- Pracownicy otrzymują rolę Kierownik sklepu, a nie Administrator; każdy ma własne konto z weryfikacją dwuetapową.
- Ukrywanie wersji pomaga niewiele, aktualizowanie bardzo; prosimy zablokować xmlrpc.php, jeśli Państwo z niego nie korzystają.
Quiz
Zadanie
Zadanie A6.2: Czy Państwa sklep pokazuje wersje? Prosimy wpisać adres sklepu, wersję WordPress (Kokpit > Aktualizacje) i wersję WooCommerce (Wtyczki). Program pobiera stronę główną i kanał (feed) oraz plik /wp-content/plugins/woocommerce/readme.txt (tylko pierwsze 2 kB, wiersz "Stable tag"). Szuka numerów wersji WordPress i WooCommerce w wierszach generator oraz za ?ver= przy arkuszach stylów WooCommerce, a także sprawdza w wordpress.org najnowsze wersje. Zielony, jeśli Państwa wersje są najnowsze, a to, co widać publicznie, się z nimi zgadza. Pomarańczowy, jeśli czeka tylko mała aktualizacja albo jeśli wersja jest widoczna, ale aktualna. Czerwony, jeśli sklep jest opóźniony o dużą wersję, jeśli widoczna wersja różni się od wpisanej (działa coś innego, niż Państwo sądzą) lub w przypadku nieprawidłowych danych.
Zadanie A6.2b: Czy xmlrpc jest zablokowany? Prosimy wpisać adres sklepu i zaznaczyć pole, jeśli korzystają Państwo z aplikacji lub usługi, która potrzebuje xmlrpc.php. Program pobiera /xmlrpc.php zwykłym żądaniem GET, niczego nie wysyłając. Zielony przy 401, 403, 404, 410, przekierowaniu lub zwykłej stronie HTML. Czerwony przy 405 z tekstem "XML-RPC server accepts POST requests only." bez zaznaczonego pola; pomarańczowy, jeśli zaznaczyli Państwo, że go potrzebują. Program sprawdza też, czy lista nazw użytkowników pod /wp-json/wp/v2/users jest publiczna (pomarańczowy, jeśli widać nazwy).
Zielony znacznik oznacza, że ta kontrola jest obecnie w porządku, a nie że Państwa sklep jest bezpieczny.
Dalsza lektura
Kroki w panelu dotyczą WebOké; u innych dostawców działa to podobnie.
- Darmowy kurs WordPress 7.2: Śledzenie aktualizacji
- Darmowy kurs WordPress 8.1: Kopie zapasowe: co, gdzie i jak często
- Darmowy kurs WordPress 8.2: Przywracanie i testowanie
- Darmowy kurs WordPress 3.3: Użytkownicy i role
- Instrukcja DirectAdmin 16.1: Jakie kopie zapasowe są dostępne w WebOké
- Kopie zapasowe WebOké: przeglądanie, przywracanie lub pobieranie kopii zapasowej
- Brak dostępu do xmlrpc.php w WordPressie
- High Performance Order Storage (developer.woocommerce.com, w języku angielskim): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
