Ažuriranja, sigurnosne kopije i uloge
Modul 6: Upravljanje i sigurnost · Vrijeme čitanja: 11 minuta
Cilj učenja: Nakon ove lekcije moći ćete ažurirati WooCommerce trgovinu i izraditi njezinu sigurnosnu kopiju bez gubitka narudžbi te raspodijeliti prava tako da svatko može raditi samo ono što mu je potrebno.
Ključni pojmovi: veliko i malo ažuriranje, ažuriranje baze podataka, proširenja i kompatibilnost, nadjačavanje predložaka (template overrides), zastarjeli predlošci, sigurnosna kopija prije ažuriranja, narudžbe između sigurnosne kopije i vraćanja, HPOS tablice, uloge Voditelj trgovine (Shop manager) i Kupac (Customer), najmanja potrebna prava, prikazivanje verzija, xmlrpc.php
Zašto se trgovina razlikuje od obične stranice
U tečaju o WordPressu (lekcije 7.2, 8.1 i 8.2) opisano je kako ažurirati WordPress, kako izraditi sigurnosne kopije i kako ih vratiti. Kod trgovine sve to vrijedi, uz jednu veliku razliku: baza podataka mijenja se tijekom cijelog dana. U nju ulazi svaka narudžba, svaki kupac, svaka promjena zalihe i svako plaćanje. Kod informativne stranice sa sigurnosnom kopijom od jučer izgubite najviše jednu objavu. Kod trgovine gubite narudžbe koje su već plaćene.
Zato za ovu lekciju vrijede dva osnovna pravila:
- Vraćanje sigurnosne kopije kod trgovine je posljednji korak, a ne prvi.
- Ažurirajte prema planu, a ne "usput u petak poslijepodne".
Ažuriranja WooCommercea
WooCommerce redovito objavljuje nove verzije, a između njih i manje popravke. Broj verzije ima tri dijela, primjerice 11.2.2. Promjena posljednjeg broja znači manji popravak ili sigurnosno ažuriranje; promjena prvog ili drugog broja donosi nove funkcije, a ponekad i promjene na koje se moraju prilagoditi proširenja ili Vaša tema.
Pri ažuriranju WooCommercea događaju se tri stvari koje kod običnog dodatka rjeđe vidite:
- Ažuriranje baze podataka. Ponekad WooCommerce mora prilagoditi tablice. Tada u administraciji vidite obavijest da se baza podataka ažurira; to se odvija u pozadini putem zakazanih radnji (lekcija 7.3). Nemojte to prekidati i pod WooCommerce > Status provjerite je li završeno.
- Proširenja moraju pratiti verziju. Dodaci za plaćanje, poveznice za dostavu i knjigovodstvo navode do koje su verzije WooCommercea testirani. Na zaslonu dodataka vidjet ćete upozorenje ako proširenje ne navodi noviju verziju. Prije ažuriranja pročitajte popis promjena svog dodatka za plaćanje: dodatak za plaćanje koji prestane raditi znači trgovinu koja ne prodaje.
- Nadjačavanje predložaka. Mnoge teme imaju vlastite kopije WooCommerce predložaka (mapa
woocommerce/u temi). Ako WooCommerce promijeni izvornik, kopija postaje zastarjela. Pod WooCommerce > Status (Status sustava) pri dnu, kod teme, navedeno je koje predloške tema nadjačava i koji su zastarjeli. Zastarjelim predlošcima mogu nedostajati nova polja ili mogu uzrokovati pogreške. Ažurirajte temu ili zatražite ažuriranje od njezina autora.
Mala ažuriranja (posljednji broj) po mogućnosti provedite brzo, najbolje automatski, jer često ispravljaju sigurnosne propuste. Velika ažuriranja najprije testirajte na probnom okruženju (staging, lekcija 7.3), u mirnom trenutku, sa sigurnosnom kopijom izrađenom neposredno prije.
Sigurnosne kopije: što nestaje pri vraćanju
Primjer. Theehuis Example svake noći u 03.00 sati izrađuje sigurnosnu kopiju. U utorak u 10.00 sati administrator ažurira WooCommerce, nakon čega stranica proizvoda prikazuje pogrešku. Između 03.00 i 10.00 stiglo je šest narudžbi, plaćenih putem pružatelja usluga plaćanja. Ako sada vratite sigurnosnu kopiju od 03.00:
- tih je šest narudžbi nestalo iz baze podataka, iako je novac kod pružatelja usluga plaćanja;
- trgovina više ne zna da je zaliha manja;
- trgovina kasnije možda još prima obavijesti (webhooks) od pružatelja usluga o narudžbama koje ne poznaje.
Zato:
- Izradite sigurnosnu kopiju neposredno prije ažuriranja, a ne samo noću. Tako je praznina što manja.
- Pri vraćanju zabilježite koje su narudžbe stigle nakon sigurnosne kopije (iz e-poruka "Nova narudžba" i nadzorne ploče Vašeg pružatelja usluga) i zatim ih ručno vratite ili ih unaprijed izvezite.
- Po mogućnosti vratite samo datoteke (staru mapu dodatka ili teme) ako je problem u kodu, a bazu podataka ostavite netaknutom. Ažuriranje se često može poništiti instaliranjem prethodne verzije dodatka; tečaj o WordPressu, lekcija 8.2, pokazuje kako ciljano vratiti podatke. Ako je ažuriranje već ažuriralo bazu podataka, stara verzija s njom možda više neće raditi: zato najprije testirajte na probnom okruženju.
- Izrađujte sigurnosne kopije češće nego kod obične stranice: trgovini u kojoj narudžbe stižu cijeli dan potrebna je sigurnosna kopija baze podataka barem jednom dnevno, a po mogućnosti i češće, te kopija izvan poslužitelja (pravilo 3-2-1, tečaj o WordPressu, lekcija 8.1).
Od verzije WooCommerce 8.2 narudžbe se kod novih trgovina spremaju u vlastite tablice (HPOS, lekcija 1.2), kao što je wp_wc_orders. Dodatak za sigurnosne kopije koji obuhvaća samo "objave" ili tablice odabire prema nazivu mora obuhvatiti i te tablice. Pri testnom vraćanju (tečaj o WordPressu, lekcija 8.2) provjerite jesu li narudžbe zaista u kopiji.
Kod WebOkéa usluga WebOké Backups svake noći izrađuje sigurnosnu kopiju koja se 30 dana čuva u drugom podatkovnom centru (DA 16.1); osim toga, prije ažuriranja možete sami izraditi sigurnosnu kopiju u DirectAdminu ili Installatronu. Kod drugih pružatelja usluga hostinga to funkcionira slično; raspitajte se koliko često i koliko dugo.
Uloge: tko smije što
WooCommerce WordPressu dodaje dvije uloge (tečaj o WordPressu, lekcija 3.3):
- Kupac (Customer): kupac s korisničkim računom. Može vidjeti samo vlastite narudžbe i podatke. Ovoj ulozi nikada nemojte dodijeliti administratorska prava.
- Voditelj trgovine (Shop manager): može upravljati proizvodima, narudžbama, kupcima, kuponima i postavkama WooCommercea, ali ne može instalirati dodatke niti mijenjati temu.
Za zaposlenike koji pakiraju narudžbe, odgovaraju na upite kupaca ili unose proizvode dovoljna je uloga Voditelj trgovine. Uloga Administrator namijenjena je samo onima koji se brinu o tehnici. Svaki zaposlenik treba imati vlastiti korisnički račun s provjerom u dva koraka (tečaj o WordPressu, lekcija 7.3); nemojte koristiti zajednički račun "trgovina". Voditelj trgovine vidi sve podatke o kupcima, stoga uklonite korisnički račun kada netko ode.
API ključevi (lekcija 2.4) također su oblik prava: poveznici dodijelite samo pravo čitanja ako ne mora ništa zapisivati i izbrišite ključeve koji se više ne koriste.
Što Vaša trgovina prikazuje svima
Napadači traže trgovine sa starom verzijom WooCommercea ili s dodatkom za plaćanje koji ima poznatu ranjivost. WooCommerce u izvorni kod prema zadanim postavkama dodaje redak <meta name="generator" content="WooCommerce 11.2.2">, a verzija se nalazi i iza stilskih datoteka (?ver=). Skrivanje je mali dobitak, a ažuriranje velik. Trgovina koja je uredno ažurirana ne mora se puno brinuti zbog vidljivog broja verzije. Trgovina koja zaostaje time se odaje.
Datoteka xmlrpc.php stara je poveznica pomoću koje se aplikacije prijavljuju u WordPress. Često se zloupotrebljava za pogađanje lozinki. Ako ne koristite aplikaciju ili uslugu kojoj je potrebna, zatvorite je (kod WebOkéa je prema zadanim postavkama zatvorena, KB 169). Otvorena datoteka xmlrpc.php na običan zahtjev u pregledniku odgovara porukom "XML-RPC server accepts POST requests only." i statusom 405. Zatvorena vraća 403 ili 404.
Sažetak
- Baza podataka trgovine mijenja se cijeli dan: vraćanje sigurnosne kopije znači gubitak narudžbi koje su već plaćene.
- Mala ažuriranja provedite brzo, velika najprije na probnom okruženju; pod WooCommerce > Status pratite ažuriranje baze podataka, proširenja i zastarjele predloške.
- Sigurnosnu kopiju izradite neposredno prije ažuriranja i češće nego kod obične stranice; provjerite jesu li obuhvaćene tablice narudžbi.
- Zaposlenici dobivaju ulogu Voditelj trgovine, a ne Administrator; svatko ima vlastiti korisnički račun s provjerom u dva koraka.
- Skrivanje verzija malo pomaže, a ažuriranje puno; zatvorite xmlrpc.php ako ga ne koristite.
Kviz
Zadatak
Zadatak A6.2: Prikazuje li Vaša web-trgovina verzije? Unesite adresu svoje trgovine, svoju verziju WordPressa (Nadzorna ploča > Ažuriranja) i svoju verziju WooCommercea (Dodaci). Program dohvaća početnu stranicu i feed te datoteku /wp-content/plugins/woocommerce/readme.txt (samo prva 2 kB, redak "Stable tag"). Traži brojeve verzija WordPressa i WooCommercea u generator retcima i iza ?ver= kod stilskih datoteka WooCommercea te na wordpress.org provjerava najnovije verzije. Zeleno ako su Vaše verzije najnovije i ako se ono što je vidljivo s njima podudara. Narančasto ako je na čekanju samo malo ažuriranje ili ako je verzija vidljiva, ali aktualna. Crveno ako zaostajete za jednom velikom verzijom, ako se vidljiva verzija razlikuje od one koju ste unijeli (radi nešto drugo nego što mislite) ili kod nevažećeg unosa.
Zadatak A6.2b: Je li xmlrpc zatvoren? Unesite adresu svoje trgovine i označite kvačicom ako koristite aplikaciju ili uslugu kojoj je potreban xmlrpc.php. Program dohvaća /xmlrpc.php običnim GET zahtjevom, bez slanja ikakvih podataka. Zeleno kod 401, 403, 404, 410, preusmjeravanja ili obične HTML stranice. Crveno kod 405 s tekstom "XML-RPC server accepts POST requests only." bez kvačice; narančasto ako ste naveli da Vam je potreban. Program provjerava i je li popis korisničkih imena putem /wp-json/wp/v2/users javan (narančasto ako su imena vidljiva).
Zelena kvačica znači da je ova provjera trenutačno u redu, a ne da je Vaša trgovina sigurna.
Daljnje čitanje
Koraci u upravljačkoj ploči vrijede za WebOké; kod drugih pružatelja usluga postupak je sličan.
- Besplatan WordPress tečaj 7.2: Praćenje ažuriranja
- Besplatan WordPress tečaj 8.1: Sigurnosne kopije: što, gdje i koliko često
- Besplatan WordPress tečaj 8.2: Vraćanje i testiranje
- Besplatan WordPress tečaj 3.3: Korisnici i uloge
- DirectAdmin priručnik 16.1: Koje sigurnosne kopije postoje kod WebOké
- WebOké sigurnosne kopije: pregled, vraćanje ili preuzimanje sigurnosne kopije
- WordPress: pristup datoteci xmlrpc.php ne radi
- High Performance Order Storage (developer.woocommerce.com, na engleskom): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
