Przejdź do treści

Ustawienia plików cookie

Prosimy wybrać, na które rodzaje plików cookie Państwo zezwalają. Wybór można zmienić w dowolnym momencie w Ustawieniach plików cookie na dole każdej strony. Polityka prywatności

Niezbędne

Zawsze włączone

Potrzebne do logowania, zachowania koszyka i zapamiętania wyborów. Są zawsze włączone.

Jakie pliki cookie?
  • weboke_sessie, weboke_klant, weboke_remember: sesja i pozostanie zalogowanym
  • weboke_basket: koszyk
  • wkBtwIncl: wyświetlanie cen z VAT lub bez VAT
  • wok_cookies: wybór dotyczący plików cookie, 12 miesięcy

Mierzą, która reklama prowadzi do odwiedzin lub zamówienia, abyśmy nie płacili za reklamy, które nic nie dają.

Jakie pliki cookie?
  • Google Ads przez Google Tag Manager (_gcl_au, _gcl_aw), do 90 dni
  • OpenAI Ads, reklamy w ChatGPT
  • wok_aff: przez którego partnera trafili Państwo do nas (program partnerski), 60 dni

4,6

Kraj i język

Każdy kraj ma własną stronę z cenami i stawką VAT tego kraju.

Wyświetl

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:

  1. W sklepie przywrócenie kopii zapasowej jest ostatnim krokiem, a nie pierwszym.
  2. 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

1. Po aktualizacji sklep o 10.00 wyświetla błąd. Ostatnia kopia zapasowa pochodzi z 03.00. Jakie jest największe ryzyko, jeśli przywrócą Państwo całą kopię?



2. Gdzie można sprawdzić, czy motyw używa nieaktualnych szablonów WooCommerce?



3. Pracownik pakuje zamówienia i odpowiada na pytania klientów. Jaka rola jest odpowiednia?



4. Co oznacza status 405 z tekstem "XML-RPC server accepts POST requests only." po otwarciu /xmlrpc.php w przeglądarce?



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.2: Czy Państwa sklep pokazuje wersje?




Wprowadzone dane i wyniki sprawdzania nie są zapisywane. Przeglądarka zapamiętuje udzielone odpowiedzi oraz informację, czy zadanie zostało zaliczone. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało zaliczone (lub prawie zaliczone); tam można ją również usunąć.

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.

Zadanie A6.2b: Czy xmlrpc jest zablokowany?



Wprowadzone dane i wyniki sprawdzania nie są zapisywane. Przeglądarka zapamiętuje udzielone odpowiedzi oraz informację, czy zadanie zostało zaliczone. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało zaliczone (lub prawie zaliczone); tam można ją również usunąć.

Dalsza lektura

Kroki w panelu dotyczą WebOké; u innych dostawców działa to podobnie.

Chwileczkę…

Konfiguracja domen

Dla każdej domeny można ustawić serwery nazw, powiązanie z hostingiem oraz to, kto zostanie właścicielem.

Wczytywanie domen…