Moduuli 6 · 6.2
Päivitykset, varmuuskopiot ja roolit
Moduuli 6: Ylläpito ja tietoturva · Lukuaika: 11 minuuttia
Oppimistavoite: Tämän oppitunnin jälkeen osaat päivittää ja varmuuskopioida WooCommerce-kaupan menettämättä tilauksia. Osaat myös jakaa oikeudet niin, että jokainen voi tehdä vain sen, mitä tarvitsee.
Keskeiset käsitteet: suuri ja pieni päivitys, tietokannan päivitys, laajennukset ja yhteensopivuus, mallipohjien ohitukset (template overrides), vanhentuneet mallipohjat, varmuuskopio ennen päivitystä, varmuuskopion ja palautuksen välillä tulleet tilaukset, HPOS-taulut, roolit Kauppias (Shop manager) ja Asiakas (Customer), vähimmät oikeudet, versioiden näkyminen, xmlrpc.php
Miksi verkkokauppa eroaa tavallisesta sivustosta
WordPress-kurssilla (oppitunnit 7.2, 8.1 ja 8.2) kerrotaan, miten WordPress päivitetään, miten varmuuskopiot tehdään ja miten ne palautetaan. Kaikki se pätee myös verkkokauppaan, yhdellä suurella erolla: tietokanta muuttuu koko päivän. Jokainen tilaus, asiakas, varastomuutos ja maksu tallentuu sinne. Tietosivustolla eilinen varmuuskopio vie korkeintaan yhden artikkelin. Verkkokaupassa menetät tilauksia, jotka on jo maksettu.
Siksi tällä oppitunnilla on kaksi nyrkkisääntöä:
- Verkkokaupassa palautus on viimeinen keino, ei ensimmäinen.
- Päivitä suunnitelmallisesti, älä "nopeasti välissä perjantai-iltapäivänä".
WooCommercen päivitykset
WooCommerce julkaisee säännöllisesti uusia versioita ja niiden välissä pieniä korjauksia. Versionumerossa on kolme osaa, esimerkiksi 11.2.2. Muutos viimeisessä numerossa on pieni korjaus tai tietoturvapäivitys. Muutos ensimmäisessä tai toisessa numerossa tuo uusia ominaisuuksia ja joskus muutoksia, joihin laajennusten tai teemasi täytyy mukautua.
WooCommercen päivityksessä tapahtuu kolme asiaa, joita tavallisen lisäosan kohdalla näkee harvemmin:
- Tietokannan päivitys. Joskus WooCommercen täytyy muokata tauluja. Näet silloin hallinnassa ilmoituksen, että tietokantaa päivitetään. Se etenee taustalla ajastettujen toimintojen kautta (oppitunti 7.3). Älä keskeytä sitä, ja tarkista kohdasta WooCommerce > Tila, onko se valmis.
- Laajennusten täytyy pysyä mukana. Maksulisäosat, toimitusintegraatiot ja kirjanpitointegraatiot kertovat, mihin WooCommerce-versioon asti ne on testattu. Lisäosanäkymässä näkyy varoitus, jos laajennus ei mainitse uudempaa versiota. Lue maksulisäosasi muutokset ennen päivittämistä: rikkoutunut maksulisäosa tarkoittaa kauppaa, joka ei myy.
- Mallipohjien ohitukset. Monissa teemoissa on omia kopioita WooCommercen mallipohjista (teeman kansio
woocommerce/). Kun WooCommerce muuttaa alkuperäistä, kopio vanhenee. Kohdassa WooCommerce > Tila (Järjestelmän tila) näkyy alhaalla teeman kohdalla, mitkä mallipohjat se ohittaa ja mitkä niistä ovat vanhentuneita. Vanhentuneista mallipohjista voi puuttua uusia kenttiä, tai ne voivat aiheuttaa virheitä. Päivitä teema tai pyydä tekijältä päivitystä.
Pienet päivitykset (viimeinen numero) kannattaa ottaa käyttöön nopeasti, mieluiten automaattisesti, koska ne korjaavat usein tietoturva-aukkoja. Suuret päivitykset testaat ensin testiympäristössä (staging, oppitunti 7.3) rauhalliseen aikaan ja otat varmuuskopion juuri ennen päivitystä.
Varmuuskopiot: mitä katoaa palautuksessa
Esimerkki. Theehuis Example ottaa varmuuskopion joka yö klo 03.00. Tiistaina klo 10.00 ylläpitäjä päivittää WooCommercen, ja sen jälkeen tuotesivu näyttää virheen. Klo 03.00 ja 10.00 välillä tuli kuusi tilausta, jotka maksettiin maksupalvelun kautta. Jos palautat nyt klo 03.00 otetun varmuuskopion:
- nuo kuusi tilausta katoavat tietokannasta, vaikka rahat ovat maksupalvelulla
- kauppa ei enää tiedä, että varastossa on vähemmän tuotteita
- kauppa saattaa myöhemmin saada maksupalvelulta ilmoituksia (webhookeja) tilauksista, joita se ei tunne.
Siksi:
- Ota varmuuskopio juuri ennen päivitystä, älä pelkästään öisin. Silloin aukko jää mahdollisimman pieneksi.
- Kirjaa palautuksen yhteydessä ylös, mitkä tilaukset tulivat varmuuskopion jälkeen (sähköposteista "Uusi tilaus" ja maksupalvelusi hallintapaneelista), ja lisää ne sen jälkeen käsin takaisin tai vie ne ulos etukäteen.
- Palauta mieluiten vain tiedostot (vanha lisäosa- tai teemakansio), jos ongelma on koodissa, ja jätä tietokanta ennalleen. Päivityksen voi usein perua asentamalla lisäosan edellisen version. WordPress-kurssin oppitunti 8.2 näyttää, miten palautat kohdennetusti. Jos päivitys on jo päivittänyt tietokannan, vanha versio ei välttämättä enää toimi sen kanssa: siksi testaa ensin testiympäristössä.
- Varmuuskopioi useammin kuin tavallisella sivustolla: kauppa, johon tulee tilauksia koko päivän, tarvitsee tietokannan varmuuskopion vähintään päivittäin, mieluiten useammin, sekä kopion palvelimen ulkopuolelle (3-2-1-sääntö, WordPress-kurssin oppitunti 8.1).
WooCommerce 8.2:sta lähtien uusien kauppojen tilaukset tallentuvat omiin tauluihinsa (HPOS, oppitunti 1.2), kuten wp_wc_orders. Varmuuskopiolisäosan, joka ottaa mukaan vain "artikkelit" tai valitsee taulut nimen perusteella, täytyy ottaa myös nämä taulut. Tarkista palautustestissä (WordPress-kurssin oppitunti 8.2), että tilaukset todella ovat mukana.
WebOkén palveluissa WebOké Backups ottaa joka yö varmuuskopion, jota säilytetään 30 päivää toisessa konesalissa (DA 16.1). Lisäksi voit itse ottaa varmuuskopion ennen päivitystä DirectAdminissa tai Installatronissa. Muilla palveluntarjoajilla tämä toimii samaan tapaan: kysy, kuinka usein ja kuinka pitkään varmuuskopiot säilytetään.
Roolit: kuka saa tehdä mitä
WooCommerce lisää WordPressiin kaksi roolia (WordPress-kurssin oppitunti 3.3):
- Asiakas (Customer): asiakas, jolla on tili. Näkee vain omat tilauksensa ja tietonsa. Älä koskaan anna tälle roolille hallintaoikeuksia.
- Kauppias (Shop manager): voi hallita tuotteita, tilauksia, asiakkaita, kuponkeja ja WooCommercen asetuksia, mutta ei voi asentaa lisäosia eikä vaihtaa teemaa.
Työntekijöille, jotka pakkaavat tilauksia, vastaavat asiakkaiden kysymyksiin tai syöttävät tuotteita, Kauppias riittää. Ylläpitäjä on vain sille, joka hoitaa tekniikan. Jokaiselle työntekijälle oma tili ja kaksivaiheinen tunnistautuminen (WordPress-kurssin oppitunti 7.3), ei yhteistä "kauppa"-tiliä. Kauppias näkee kaikki asiakastiedot, joten poista tilit, kun joku lähtee.
API-avaimet (oppitunti 2.4) ovat myös eräänlaisia oikeuksia: anna integraatiolle pelkkä lukuoikeus, jos sen ei tarvitse kirjoittaa mitään, ja poista avaimet, joita ei enää käytetä.
Mitä kauppasi näyttää kaikille
Hyökkääjät etsivät kauppoja, joissa on vanha WooCommerce-versio tai maksulisäosa, jossa on tunnettu haavoittuvuus. WooCommerce lisää oletuksena lähdekoodiin rivin <meta name="generator" content="WooCommerce 11.2.2">, ja versio näkyy myös tyylitiedostojen perässä (?ver=). Piilottaminen on pieni hyöty, päivittäminen suuri. Ajan tasalla olevan kaupan ei juuri tarvitse murehtia näkyvästä versionumerosta. Jälkeen jäänyt kauppa paljastaa itsensä.
Tiedosto xmlrpc.php on vanha rajapinta, jonka kautta sovellukset kirjautuvat WordPressiin. Sitä käytetään paljon väärin salasanojen arvaamiseen. Jos et käytä sovellusta tai palvelua, joka sitä tarvitsee, sulje se (WebOkén palveluissa se on oletuksena suljettu, KB 169). Avoin xmlrpc.php vastaa selaimen tavalliseen pyyntöön tekstillä "XML-RPC server accepts POST requests only." ja tilakoodilla 405. Suljettu antaa 403 tai 404.
Yhteenveto
- Verkkokaupan tietokanta muuttuu koko päivän: palautus vie tilauksia, jotka on jo maksettu.
- Pienet päivitykset nopeasti, suuret ensin testiympäristössä. Seuraa tietokannan päivitystä, laajennuksia ja vanhentuneita mallipohjia kohdassa WooCommerce > Tila.
- Varmuuskopioi juuri ennen päivitystä ja useammin kuin tavallisella sivustolla. Tarkista, että tilaustaulut ovat mukana.
- Työntekijät saavat roolin Kauppias, eivät Ylläpitäjä. Jokaisella on oma tili ja kaksivaiheinen tunnistautuminen.
- Versioiden piilottaminen auttaa vähän, päivittäminen paljon. Sulje xmlrpc.php, jos et käytä sitä.
Tietovisa (quiz)
Tehtävä
Tehtävä A6.2: Näyttääkö kauppasi versionumeroita? Syötä kauppasi osoite, WordPress-versiosi (Ohjausnäkymä > Päivitykset) ja WooCommerce-versiosi (Lisäosat). Ohjelma hakee etusivun ja syötteen sekä tiedoston /wp-content/plugins/woocommerce/readme.txt (vain ensimmäiset 2 kt, rivi "Stable tag"). Se etsii WordPressin ja WooCommercen versionumeroita generator-riveiltä ja WooCommercen tyylitiedostojen perästä (?ver=) ja hakee uusimmat versiot osoitteesta wordpress.org. Vihreä, jos versiosi ovat uusimmat ja näkyvä tieto vastaa niitä. Oranssi, jos vain pieni päivitys on tekemättä tai jos versio näkyy mutta on ajan tasalla. Punainen, jos olet suuren version jäljessä, jos näkyvä versio eroaa syöttämästäsi (käynnissä on jotain muuta kuin luulet) tai jos syöte on virheellinen.
Tehtävä A6.2b: Onko xmlrpc suljettu? Syötä kauppasi osoite ja valitse ruutu, jos käytät sovellusta tai palvelua, joka tarvitsee tiedostoa xmlrpc.php. Ohjelma hakee osoitteen /xmlrpc.php tavallisella GET-pyynnöllä lähettämättä mitään. Vihreä, kun vastaus on 401, 403, 404, 410, uudelleenohjaus tai tavallinen HTML-sivu. Punainen, kun vastaus on 405 ja teksti "XML-RPC server accepts POST requests only." eikä ruutua ole valittu. Oranssi, jos ilmoitit tarvitsevasi sitä. Ohjelma tarkistaa myös, onko käyttäjänimien luettelo julkisesti saatavilla osoitteessa /wp-json/wp/v2/users (oranssi, jos nimiä näkyy).
Vihreä merkki tarkoittaa, että tämä tarkistus on nyt kunnossa, ei sitä, että kauppasi olisi turvallinen.
Lue lisää
Hallintapaneelin vaiheet koskevat WebOkéta. Muilla palveluntarjoajilla ne toimivat samaan tapaan.
- Ilmainen WordPress-kurssi 7.2: Päivitysten seuranta
- Ilmainen WordPress-kurssi 8.1: Varmuuskopiot: mitä, missä ja kuinka usein
- Ilmainen WordPress-kurssi 8.2: Palauttaminen ja testaaminen
- Ilmainen WordPress-kurssi 3.3: Käyttäjät ja roolit
- DirectAdmin-ohje 16.1: Millaisia varmuuskopioita WebOké tarjoaa
- WebOké Backups: varmuuskopion tarkasteleminen, palauttaminen tai lataaminen
- WordPressin xmlrpc.php-tiedostoon ei pääse
- High Performance Order Storage (developer.woocommerce.com, englanniksi): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
