Modul 6 · 6.2
Oppdateringer, sikkerhetskopier og roller
Modul 6: Drift og sikkerhet · Lesetid: 11 minutter
Læringsmål: Etter denne leksjonen kan du oppdatere og ta sikkerhetskopi av en WooCommerce-butikk uten å miste bestillinger, og fordele rettigheter slik at alle bare kan det de trenger.
Nøkkelbegreper: store og små oppdateringer, databaseoppdatering, utvidelser og kompatibilitet, maloverstyringer (template overrides), utdaterte maler, sikkerhetskopi før oppdateringen, bestillinger mellom sikkerhetskopi og gjenoppretting, HPOS-tabeller, rollene Butikkadministrator (Shop manager) og Kunde (Customer), minste rettigheter, vise versjoner, xmlrpc.php
Hvorfor en nettbutikk er annerledes enn et vanlig nettsted
I WordPress-kurset (leksjon 7.2, 8.1 og 8.2) står det hvordan du oppdaterer WordPress, tar sikkerhetskopier og gjenoppretter. Alt dette gjelder også for en nettbutikk, med én stor forskjell: databasen endres hele dagen. Hver bestilling, hver kunde, hver lagerendring og hver betaling havner der. På et informasjonsnettsted mister du høyst et innlegg med en sikkerhetskopi fra i går. I en nettbutikk mister du bestillinger som allerede er betalt.
Derfor to tommelfingerregler for denne leksjonen:
- I en nettbutikk er gjenoppretting det siste steget, ikke det første.
- Oppdater etter en plan, ikke "fort innimellom en fredag ettermiddag".
Oppdateringer av WooCommerce
WooCommerce kommer jevnlig med nye versjoner, og innimellom med små rettelser. Versjonsnummeret har tre deler, for eksempel 11.2.2. En endring i det siste tallet er en liten rettelse eller sikkerhetsoppdatering. En endring i det første eller andre tallet gir nye funksjoner og noen ganger endringer som utvidelser eller temaet ditt må tilpasses.
Ved en oppdatering av WooCommerce skjer det tre ting som du ser sjeldnere ved en vanlig utvidelse:
- En databaseoppdatering. Noen ganger må WooCommerce endre tabellene. Da ser du en melding i administrasjonen om at databasen oppdateres. Det skjer i bakgrunnen via de planlagte handlingene (leksjon 7.3). Ikke avbryt det, og sjekk under WooCommerce > Status om det er ferdig.
- Utvidelsene må følge med. Betalingsutvidelser, fraktkoblinger og regnskapskoblinger oppgir hvilken WooCommerce-versjon de er testet med. På utvidelsessiden ser du en advarsel hvis en utvidelse ikke nevner en nyere versjon. Les endringsloggen til betalingsutvidelsen din før du oppdaterer: en betalingsutvidelse som slutter å virke, betyr en nettbutikk som ikke selger.
- Maloverstyringer. Mange temaer har egne kopier av WooCommerce-maler (mappen
woocommerce/i temaet). Endrer WooCommerce originalen, blir kopien utdatert. Under WooCommerce > Status (Systemstatus) står det nederst under temaet hvilke maler det overstyrer og hvilke som er utdatert. Utdaterte maler kan mangle nye felt eller gi feil. Oppdater temaet, eller be utvikleren om en oppdatering.
Små oppdateringer (siste tall) installerer du helst raskt, gjerne automatisk, fordi de ofte retter sikkerhetsfeil. Store oppdateringer tester du først i et stagingmiljø (leksjon 7.3), på et rolig tidspunkt, med en sikkerhetskopi rett før.
Sikkerhetskopier: hva som forsvinner ved gjenoppretting
Et eksempel. Theehuis Example tar en sikkerhetskopi hver natt kl. 03.00. Tirsdag kl. 10.00 oppdaterer administratoren WooCommerce, og etterpå viser produktsiden en feil. Mellom 03.00 og 10.00 kom det inn seks bestillinger, betalt via betalingsleverandøren. Gjenoppretter du nå sikkerhetskopien fra 03.00:
- er de seks bestillingene borte fra databasen, mens pengene står hos leverandøren;
- vet ikke butikken lenger at lagerbeholdningen er lavere;
- får butikken kanskje senere meldinger (webhooks) fra leverandøren om bestillinger den ikke kjenner.
Derfor:
- Ta en sikkerhetskopi rett før en oppdatering, ikke bare om natten. Da blir hullet så lite som mulig.
- Noter ved gjenoppretting hvilke bestillinger som kom etter sikkerhetskopien (fra e-postene "Ny ordre" og kontrollpanelet hos leverandøren din), og legg dem inn igjen for hånd etterpå, eller eksporter dem på forhånd.
- Gjenopprett helst bare filene (den gamle utvidelses- eller temamappen) hvis problemet ligger i koden, og la databasen stå. En oppdatering kan ofte rulles tilbake ved å installere forrige versjon av utvidelsen. WordPress-kurset, leksjon 8.2, viser hvordan du gjenoppretter målrettet. Har oppdateringen allerede oppdatert databasen, fungerer den gamle versjonen kanskje ikke lenger med den: derfor tester du først i et stagingmiljø.
- Ta sikkerhetskopi oftere enn for et vanlig nettsted: en nettbutikk med bestillinger hele dagen trenger minst daglig, helst oftere, en sikkerhetskopi av databasen, og en kopi utenfor serveren (3-2-1-regelen, WordPress-kurset leksjon 8.1).
Siden WooCommerce 8.2 lagres bestillinger i nye butikker i egne tabeller (HPOS, leksjon 1.2), for eksempel wp_wc_orders. En utvidelse for sikkerhetskopi som bare tar med "innlegg" eller velger tabeller etter navn, må også ta med disse tabellene. Sjekk ved en gjenopprettingstest (WordPress-kurset, leksjon 8.2) at bestillingene faktisk er med.
Hos WebOké tar WebOké Backups en sikkerhetskopi hver natt som oppbevares i 30 dager i et annet datasenter (DA 16.1). I tillegg kan du selv ta en sikkerhetskopi i DirectAdmin eller Installatron før en oppdatering. Hos andre leverandører fungerer det på lignende måte. Spør hvor ofte og hvor lenge.
Roller: hvem kan gjøre hva
WooCommerce legger til to roller i WordPress (WordPress-kurset, leksjon 3.3):
- Kunde (Customer): en kunde med konto. Kan bare se sine egne bestillinger og opplysninger. Gi aldri denne rollen administrasjonsrettigheter.
- Butikkadministrator (Shop manager): kan administrere produkter, bestillinger, kunder, kuponger og innstillingene i WooCommerce, men kan ikke installere utvidelser eller endre temaet.
For ansatte som pakker bestillinger, svarer på spørsmål fra kunder eller legger inn produkter, er Butikkadministrator nok. Administrator er bare for den som tar seg av det tekniske. Hver ansatt får sin egen konto med totrinnsbekreftelse (WordPress-kurset, leksjon 7.3), ingen felles konto "butikk". En butikkadministrator ser alle kundeopplysninger, så fjern kontoer når noen slutter.
API-nøkler (leksjon 2.4) er også en form for rettigheter: gi en kobling bare lesetilgang hvis den ikke trenger å skrive noe, og slett nøkler som ikke brukes lenger.
Hva nettbutikken din viser til alle
Angripere leter etter nettbutikker med en gammel versjon av WooCommerce eller en betalingsutvidelse med et kjent sikkerhetshull. WooCommerce legger som standard inn linjen <meta name="generator" content="WooCommerce 11.2.2"> i kildekoden, og versjonen står også bak stilarkene (?ver=). Å skjule er en liten gevinst, å oppdatere en stor. En nettbutikk som er oppdatert, trenger ikke bekymre seg mye for et synlig versjonsnummer. En nettbutikk som henger etter, avslører det.
Filen xmlrpc.php er en gammel kobling som apper bruker til å logge inn på WordPress. Den misbrukes mye til å gjette passord. Bruker du ingen app eller tjeneste som trenger den, stenger du den (hos WebOké er den stengt som standard, KB 169). En åpen xmlrpc.php svarer på en vanlig forespørsel i nettleseren med "XML-RPC server accepts POST requests only." og status 405. Stengt gir 403 eller 404.
Oppsummering
- Databasen i en nettbutikk endres hele dagen: gjenoppretting koster bestillinger som allerede er betalt.
- Små oppdateringer raskt, store oppdateringer først i et stagingmiljø. Følg med på databaseoppdateringen, utvidelsene og utdaterte maler under WooCommerce > Status.
- Ta sikkerhetskopi rett før en oppdatering og oftere enn for et vanlig nettsted. Sjekk at bestillingstabellene blir med.
- Ansatte får Butikkadministrator, ikke Administrator, og hver sin konto med totrinnsbekreftelse.
- Å skjule versjoner hjelper lite, å oppdatere mye. Steng xmlrpc.php hvis du ikke bruker den.
Quiz
Oppgave
Oppgave A6.2: Viser nettbutikken din versjoner? Fyll inn adressen til nettbutikken din, WordPress-versjonen din (Kontrollpanel > Oppdateringer) og WooCommerce-versjonen din (Utvidelser). Programmet henter hjemmesiden og feeden, og filen /wp-content/plugins/woocommerce/readme.txt (bare de første 2 kB, linjen "Stable tag"). Det leter etter versjonsnumre for WordPress og WooCommerce i generator-linjene og bak ?ver= ved stilarkene til WooCommerce, og henter de nyeste versjonene fra wordpress.org. Grønt hvis versjonene dine er de nyeste og det som er synlig stemmer med dem. Oransje hvis bare en liten oppdatering gjenstår, eller hvis versjonen er synlig men oppdatert. Rødt hvis du ligger en stor versjon etter, hvis den synlige versjonen er en annen enn den du fylte inn (noe annet kjører enn du tror), eller ved ugyldig inndata.
Oppgave A6.2b: Er xmlrpc stengt? Fyll inn adressen til nettbutikken din, og kryss av hvis du bruker en app eller tjeneste som trenger xmlrpc.php. Programmet henter /xmlrpc.php med en vanlig GET, uten å sende noe. Grønt ved 401, 403, 404, 410, en videresending eller en vanlig HTML-side. Rødt ved 405 med teksten "XML-RPC server accepts POST requests only." uten avkrysning, oransje hvis du oppga at du trenger den. Det sjekker også om listen med brukernavn via /wp-json/wp/v2/users er offentlig (oransje hvis navn er synlige).
En grønn hake betyr at denne kontrollen stemmer nå, ikke at nettbutikken din er sikker.
Les mer
Stegene i et panel gjelder for WebOké. Hos andre leverandører fungerer det på lignende måte.
- Gratis WordPress-kurs 7.2: Holde oppdateringer oppdatert
- Gratis WordPress-kurs 8.1: Sikkerhetskopier: hva, hvor og hvor ofte
- Gratis WordPress-kurs 8.2: Gjenopprette og teste
- Gratis WordPress-kurs 3.3: Brukere og roller
- DirectAdmin-veiledning 16.1: Hvilke backuper finnes hos WebOké
- WebOké Backups: se, gjenopprette eller laste ned en backup
- Tilgang til WordPress xmlrpc.php fungerer ikke
- High Performance Order Storage (developer.woocommerce.com, engelsk): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
