Moduuli 3 · 3.3
Digitaaliset ja virtuaaliset tuotteet
Moduuli 3: Tuotteet · Lukuaika: 11 minuuttia
Oppimistavoite: Tämän oppitunnin jälkeen osaat myydä digitaalisia ja virtuaalisia tuotteita turvallisesti: valitset turvallisen latausmenetelmän, suojaat latauskansion, asetat rajat ja hoidat peruuttamisoikeuden oikein digitaalisessa sisällössä.
Keskeiset käsitteet: virtuaalinen tuote, ladattava tuote, latauslinkki, latausraja, vanhentumispäivä, latausmenetelmä (Pakota lataukset, X-Accel-Redirect/X-Sendfile, Vain uudelleenohjaus), woocommerce_uploads, .htaccess, nginx, hyväksytyt latauskansiot (Approved download directories), pääsy maksun jälkeen, digitaalinen sisältö, nimenomainen suostumus, peruuttamisoikeudesta luopuminen
Virtuaalinen ja ladattava: kaksi eri valintaruutua
Yksinkertaisessa tuotteessa tai muunnelmassa näet kaksi valintaruutua. Ne näyttävät samanlaisilta, mutta tekevät eri asioita:
- Palvelu (Virtual) tarkoittaa: mitään ei lähetetä. WooCommerce ei laske toimituskuluja eikä kysy kassalla toimitusosoitetta (jos kaikki ostoskorin tuotteet ovat virtuaalisia). Esimerkkejä ovat teemaistajaiset paikan päällä, sähköpostilla lähetettävä lahjakortti tai verkkotyöpaja.
- Ladattava (Downloadable) tarkoittaa: maksun jälkeen asiakas saa yhden tai useamman tiedoston. WooCommerce luo jokaiselle asiakkaalle latauslinkin ja näyttää sen vahvistussähköpostissa sekä kohdassa Oma tili > Lataukset.
Digitaalinen reseptikirja pdf-tiedostona on yleensä molempia: postissa ei lähde mitään, ja tiedosto on olemassa. Painettu reseptikirja, jonka mukana tulee ilmainen pdf, on ladattava mutta ei virtuaalinen: kirja lähtee postissa.
Theehuis Example myy "Receptenboek Thee en Taart" -kirjaa pdf-tiedostona hintaan € 9,95. Valintaruudut: virtuaalinen ja ladattava.
Miten lataus toimii ja miksi menetelmällä on väliä
Kun siirrät tiedoston ladattavaan tuotteeseen, WooCommerce tallentaa sen kansioon wp-content/uploads/woocommerce_uploads/. Oletuksena se lisää tiedostonimen perään satunnaisen merkkijonon (asetus "Append a unique string to filename for security", oletuksena päällä). Asiakas ei koskaan saa tätä osoitetta, vaan linkin kauppaasi, jossa on tilausavain ja latauskoodi. WooCommerce tarkistaa jokaisella napsautuksella: kuuluuko lataus maksettuun tilaukseen, onko raja vielä täyttymättä, onko linkki voimassa? Vasta sitten asiakas saa tiedoston.
Sen, miten tiedosto sen jälkeen siirtyy asiakkaalle, valitset kohdassa WooCommerce > Asetukset > Tuotteet > Ladattavat tuotteet, asetuksessa latausmenetelmä (File download method):
| Menetelmä | Miten se toimii | Turvallisuus |
|---|---|---|
| Pakota lataukset (Force downloads, oletus) | PHP lukee tiedoston ja välittää sen itse | Todellinen osoite pysyy piilossa. Suuret tiedostot voivat joillakin palvelimilla takkuilla tai törmätä PHP:n aikarajaan |
| X-Accel-Redirect/X-Sendfile | PHP tarkistaa, verkkopalvelin lähettää tiedoston | Yhtä turvallinen ja parempi suurille tiedostoille; verkkopalvelimen täytyy tukea sitä (Apachessa tarvitaan moduuli mod_xsendfile, nginx tuntee X-Accel-Redirectin). Kysy webhotellistasi |
| Vain uudelleenohjaus (Redirect only) | WooCommerce ohjaa asiakkaan tiedoston todelliseen osoitteeseen | Turvaton: osoitteen tietävä voi jakaa sen, ja tiedoston saa ilman ostoa. WooCommerce itse kutsuu sitä nimellä "Insecure" |
Valitse siis Pakota lataukset tai X-Sendfile. Uudelleenohjaus on vain hätäratkaisu, ja asetus "Allow using redirect mode (insecure) as a last resort" antaa WooCommercen palata uudelleenohjaukseen, jos toinen menetelmä epäonnistuu; pidä se pois päältä, ellet tiedä, miksi tarvitset sitä.
Kansion suojaaminen
Kun käytät menetelmää Pakota lataukset tai X-Sendfile, kansion woocommerce_uploads täytyy olla suljettu tavallisilta kävijöiltä. Muuten joku, joka arvaa tiedostonimen tai saa sen vuotaneesta linkistä, voi hakea tiedoston suoraan. Siksi WooCommerce lisää asennuksen yhteydessä kansioon kaksi tiedostoa:
- tyhjän
index.html-tiedoston, jotta kansio ei näytä tiedostoluetteloa; .htaccess-tiedoston, jossa ondeny from all(menetelmässä Vain uudelleenohjaus:Options -Indexes).
Tämä .htaccess-tiedosto toimii Apachessa ja LiteSpeedissä (kuten WebOkéssa ja monessa muussa jaetussa webhotellissa). nginx-palvelin ei lue .htaccess-tiedostoja. Siellä palvelimen asetuksissa täytyy olla sääntö, joka estää pääsyn kansioon. Hallinnoidussa nginx-webhotellissa palveluntarjoaja hoitaa sen joskus; omalla VPS-palvelimella sinun on tehtävä se itse. WooCommerce tarkistaa tämän itse ja näyttää ilmoituksen hallintapaneelissa (ja kohdassa Sivuston eheys), jos kansio ei näytä olevan suojattu.
Muutama huomioitava asia:
- Tyhjä 200 ei ole todiste. Jos pyydät kansiota ja näet tyhjän sivun, se voi olla tyhjä
index.html, vaikka itse tiedostot olisivat avoimia. Testaa siksi myös yksi tiedosto (tehtävä tekee sen). - Ulkopuoliset tiedostot. Tuotteeseen voi myös lisätä linkin muualla olevaan tiedostoon. Tätä varten WooCommercessa on luettelo hyväksytyt latauskansiot (Approved download directories): vain näiden kansioiden tai osoitteiden tiedostoja saa käyttää latauksina. Näin kukaan hallintaoikeuksilla ei voi vahingossa tai tahallaan tarjota tuotteessa latauksena mitä tahansa palvelimen tiedostoa. Pidä luettelo lyhyenä.
- Varmuuskopiot ja staging. Kansio kulkee mukana varmuuskopiossa. Testiympäristössä (staging) ovat siis myös maksulliset tiedostosi: suojaa testiympäristö (oppitunti 7.3).
Rajat ja pääsy
Jokaiselle ladattavalle tuotteelle tai muunnelmalle asetat:
- Latausraja (Download limit): kuinka monta kertaa asiakas saa ladata. Tyhjä tarkoittaa rajatonta. Esimerkiksi 5 latauksen raja hillitsee jakamista, mutta aiheuttaa valituksia, kun joku ostaa uuden kannettavan. Valitse jotain kohtuullista ja auta asiakkaita, jotka pyytävät apua.
- Vanhentumispäivä (Download expiry): kuinka monen päivän jälkeen linkki lakkaa toimimasta.
Yleiset asetukset kohdassa Ladattavat tuotteet:
- Lataukset vaativat kirjautumisen (Downloads require login), oletuksena pois päältä. Päällä se tarkoittaa, että vierailijat eivät voi ladata mitään; ota se käyttöön vain, jos vaadit myös asiakastilin.
- Pääsy maksun jälkeen (Grant access to downloadable products after payment), oletuksena päällä: asiakas voi ladata heti, kun tilauksen tila on Käsittelyssä, eli heti onnistuneen maksun jälkeen. Jos asetus on pois päältä, vasta tilassa Valmis.
Sopimuksen peruuttaminen digitaalisessa sisällössä
Tavallisessa teekannussa asiakkaalla on 14 päivän harkinta-aika (oppitunti 5.2). Latauksessa se on hankalaa: pdf-tiedoston saanut pitää sen myös peruuttamisen jälkeen. Siksi on olemassa poikkeus, mutta vain tietyin ehdoin. EU:ssa se on direktiivin 2011/83/EU 16 artiklassa; Alankomaissa siviililain (Burgerlijk Wetboek) 6:230p artiklan g-kohdassa. Peruuttamisoikeutta ei ole digitaalisessa sisällössä, jota ei toimiteta aineellisella välineellä, jos:
- toimitus on alkanut kuluttajan nimenomaisella ennakkosuostumuksella;
- kuluttaja on ilmoittanut luopuvansa näin peruuttamisoikeudestaan; ja
- olet antanut tästä vahvistuksen (sopimuksen vahvistuksessa, pysyvällä tallennusvälineellä kuten tilaussähköpostissa).
Jos yksikin näistä kolmesta puuttuu, asiakas säilyttää peruuttamisoikeutensa, vaikka hän olisi jo ladannut tiedoston. Belgiassa ja Saksassa sama EU-sääntö on kansallisessa laissa (katso oppitunti 5.2). Suomessa sama sääntö on kuluttajansuojalain etämyyntiä koskevassa luvussa.
WooCommerce ei hoida tätä automaattisesti. Tarvitset:
- pakollisen valintaruudun kassalle, vain kun ostoskorissa on digitaalista sisältöä, ja siinä tekstin kuten "Hyväksyn, että toimitus alkaa heti, ja tiedän menettäväni näin peruuttamisoikeuteni";
- saman tekstin vahvistuksena näiden tuotteiden tilaussähköpostissa;
- oikean lauseen peruuttamistietoihisi siitä, että tämä koskee latauksia.
On olemassa laajennuksia, jotka lisäävät tällaisen valintaruudun; kassalohkossa on myös mahdollisuuksia lisäkenttiin. Arvioi ne kuten minkä tahansa lisäosan. Valmiiksi rastitettu valintaruutu ei kelpaa nimenomaiseksi suostumukseksi (oppitunti 5.4).
Huomaa ero virtuaalisiin palveluihin, kuten tiettynä päivänä pidettävään työpajaan. Niihin sovelletaan palveluja koskevia sääntöjä, joissa on eri poikkeukset. Lue oppitunti 5.2.
Yhteenveto
- Virtuaalinen = mitään ei lähetetä; ladattava = tiedostoja maksun jälkeen. Pdf on yleensä molempia.
- Valitse Pakota lataukset tai X-Accel-Redirect/X-Sendfile; Vain uudelleenohjaus on turvaton.
- Kansion
woocommerce_uploadstäytyy olla suljettu:.htaccessApachessa ja LiteSpeedissä, palvelinsääntö nginxissä. Testaa oikea tiedosto, ei pelkkää kansiota. - Pidä hyväksyttyjen latauskansioiden luettelo lyhyenä ja aseta kohtuulliset rajat.
- Latauksissa peruuttamisoikeutta ei ole vain, jos on nimenomainen suostumus, oikeudesta luopuminen ja vahvistus; WooCommerce ei tee tätä automaattisesti. Suomessa sääntö on kuluttajansuojalain etämyyntiä koskevassa luvussa.
Tietovisa (quiz)
Tehtävä
Tehtävä A3.3: Ovatko latauksesi suojattuja? Tämä tehtävä pyytää polkuja, joihin ei ole linkkiä, ja toimii siksi vain omalle kaupallesi. Ensin osoitat, että verkkotunnus on sinun: lisäät TXT-tietueen _weboke-cursus.<verkkotunnuksesi>, jossa on saamasi koodi, tai lisäät tiedoston /.well-known/weboke-cursus-<code>.txt, jonka sisältönä on tämä koodi. Anna sen jälkeen kauppasi osoite ja halutessasi yhden lataustiedoston polku sellaisena kuin WooCommerce näyttää sen tuotteessa (se alkaa /wp-content/uploads/woocommerce_uploads/). Ohjelma pyytää kansiota (ilman uudelleenohjauksia, vain alun) ja, jos annoit polun, kerran tiedoston otsakerivit. Vihreä, jos kansio palauttaa 401, 403 tai 404 tai sivun ilman tiedostoluetteloa, ja tiedosto palauttaa 401, 403 tai 404. Oranssi, jos et antanut tiedostoa: silloin vain kansio on tarkistettu, eikä tyhjä sivu kerro tarpeeksi. Punainen, jos kansio näyttää tiedostoluettelon tai tiedoston voi ladata suoraan (200): silloin kuka tahansa osoitteen tietävä voi hakea sen ostamatta. Ohjelma tallentaa vain tilakoodit, ei koskaan tiedostoa.
Kysymys itsellesi (ei tarkisteta): mikä latausmenetelmä kaupassasi on käytössä, ja miten olet hoitanut sopimuksen peruuttamisen digitaalisissa tuotteissasi?
Lue lisää
- Digital and downloadable product handling (woocommerce.com, englanniksi): https://woocommerce.com/document/digital-downloadable-product-handling/
- Ilmainen WordPress-kurssi 7.4: Sivuston vahventaminen: oikeudet, otsakkeet ja tietoturvalisäosat
- Kielletty (403): Sinulla ei ole käyttöoikeutta kohteeseen / tällä palvelimella
- Alankomaiden siviililaki (Burgerlijk Wetboek), kirja 6, artikla 6:230p (wetten.overheid.nl, hollanniksi): https://wetten.overheid.nl/BWBR0005289/
Tietopankki kuvaa tilannetta WebOkéssa (LiteSpeed, .htaccess toimii); muilla palveluntarjoajilla se toimii samaan tapaan, paitsi nginxissä.
