Moodul 3 · 3.3
Digitaalsed ja virtuaalsed tooted
Moodul 3: Tooted · Lugemisaeg: 11 minutit
Õpieesmärk: Pärast seda õppetundi oskad digitaalseid ja virtuaalseid tooteid turvaliselt müüa: valid turvalise allalaadimisviisi, kaitsed allalaadimiste kausta, määrad limiidid ja korraldad digisisu puhul taganemisõiguse õigesti.
Põhimõisted: virtuaalne toode, allalaaditav toode, allalaadimislink, allalaadimise limiit, aegumiskuupäev, allalaadimisviis (Sunnitud allalaadimised, X-Accel-Redirect/X-Sendfile, Ainult ümbersuunamine), woocommerce_uploads, .htaccess, nginx, heakskiidetud allalaadimiskaustad (Approved download directories), juurdepääs pärast makset, digisisu, sõnaselge nõusolek, taganemisõigusest loobumine
Virtuaalne ja allalaaditav: kaks eri linnukest
Lihttoote või variatsiooni juures näed kahte linnukest. Need on sarnased, aga teevad erinevaid asju:
- Virtuaalne (Virtual) tähendab, et midagi ei saadeta. WooCommerce ei arvesta tarnekulu ega küsi kassas tarneaadressi (kui kõik ostukorvis on virtuaalne). Näiteks teedegustatsioon kohapeal, e-postiga saadetav kinkekaart või veebitöötuba.
- Allalaaditav (Downloadable) tähendab, et pärast makset saab klient ühe või mitu faili. WooCommerce loob igale kliendile allalaadimislingi ja näitab seda tellimuse kinnituskirjas ning lehel Minu konto > Allalaadimised.
Digitaalne retseptiraamat pdf-ina on tavaliselt mõlemat: postiga ei saadeta midagi ja fail on olemas. Trükitud retseptiraamat koos tasuta pdf-iga on allalaaditav, aga mitte virtuaalne: raamat läheb ikkagi postiga.
Theehuis Example müüb „Receptenboek Thee en Taart“ pdf-ina hinnaga € 9,95. Linnukesed: virtuaalne ja allalaaditav.
Kuidas allalaadimine töötab ja miks viis on oluline
Kui laadid allalaaditava toote juurde faili üles, paneb WooCommerce selle kausta wp-content/uploads/woocommerce_uploads/. Vaikimisi lisab see failinimele juhusliku märgijada (säte „Append a unique string to filename for security“, vaikimisi sees). Klient ei saa kunagi seda aadressi, vaid lingi sinu poodi koos tellimuse võtme ja allalaadimiskoodiga. WooCommerce kontrollib iga klõpsu juures: kas see allalaadimine kuulub makstud tellimuse juurde, kas limiit pole täis ja kas link pole aegunud? Alles siis saab klient faili.
Kuidas fail seejärel kliendini jõuab, valid jaotises WooCommerce > Sätted > Tooted > Allalaaditavad tooted, sätte allalaadimisviis (File download method) juures:
| Viis | Kuidas see töötab | Turvalisus |
|---|---|---|
| Sunnitud allalaadimised (Force downloads, vaikimisi) | PHP loeb faili ja saadab selle ise edasi | Päris aadress jääb peidetuks. Suured failid võivad mõnel serveril takerduda või jõuda PHP ajapiiranguni |
| X-Accel-Redirect/X-Sendfile | PHP kontrollib, veebiserver saadab faili | Sama turvaline ja suurte failide puhul parem; veebiserver peab seda toetama (Apache vajab moodulit mod_xsendfile, nginx tunneb X-Accel-Redirecti). Küsi oma majutajalt |
| Ainult ümbersuunamine (Redirect only) | WooCommerce suunab kliendi faili päris aadressile | Ebaturvaline: kellel on aadress, saab seda jagada ja faili saab kätte ostmata. WooCommerce nimetab seda ise „Insecure“ |
Vali seega Sunnitud allalaadimised või X-Sendfile. Ümbersuunamine on vaid hädalahendus. Säte „Allow using redirect mode (insecure) as a last resort“ laseb WooCommerce’il minna üle ümbersuunamisele, kui teine viis ebaõnnestub; jäta see välja, kui sa ei tea täpselt, miks seda vajad.
Kausta kaitsmine
Sunnitud allalaadimiste või X-Sendfile’i puhul peab kaust woocommerce_uploads olema tavakülastajatele suletud. Muidu saab keegi, kes failinime ära arvab või lekkinud lingist välja loeb, faili otse kätte. Seepärast paneb WooCommerce paigaldamisel sellesse kausta kaks faili:
- tühja
index.html, et kaust ei näitaks failide loendit; .htaccesssisugadeny from all(viisi Ainult ümbersuunamine puhul:Options -Indexes).
See .htaccess-fail töötab Apache’il ja LiteSpeedil (nagu WebOké ja paljude teiste jagatud majutuste juures). nginx ei loe .htaccess-faile. Seal peab serveri konfiguratsioonis olema reegel, mis kausta blokeerib. Hallatud nginx-majutuse puhul teeb seda mõnikord majutaja; oma VPS-is pead seda ise tegema. WooCommerce kontrollib seda ise ja näitab haldusliideses (ja jaotises Saidi tervis) teadet, kui kaust ei paista kaitstud olevat.
Mõned asjad, millele tähelepanu pöörata:
- Tühi 200 ei ole tõend. Kui avad kausta ja näed tühja lehte, võib see olla tühi
index.html, samal ajal kui failid ise on avatud. Seepärast testi ka üht faili (ülesanne teeb seda). - Välised failid. Toote juures saad anda ka lingi mujal asuvale failile. Selleks on WooCommerce’il loend heakskiidetud allalaadimiskaustad (Approved download directories): allalaadimisena tohib kasutada ainult nendest kaustadest või aadressidelt pärit faile. Nii ei saa keegi, kellel on haldusõigused, kogemata või meelega pakkuda toote juures allalaadimisena suvalist serveris olevat faili. Hoia see loend lühike.
- Varukoopiad ja staging. Kaust läheb sinu varukoopiasse kaasa. Staging-keskkonnas on seega ka sinu tasulised failid: kaitse staging-keskkonda (õppetund 7.3).
Limiidid ja juurdepääs
Iga allalaaditava toote või variatsiooni juures määrad:
- Allalaadimise limiit (Download limit): mitu korda klient tohib alla laadida. Tühi tähendab piiramatut. Näiteks limiit 5 piirab jagamist, aga toob kaebusi, kui keegi ostab uue sülearvuti. Vali midagi mõistlikku ja aita kliente, kes seda paluvad.
- Aegumiskuupäev (Download expiry): mitme päeva pärast link enam ei tööta.
Üldsätted jaotises Allalaaditavad tooted:
- Allalaadimiseks on vaja sisse logida (Downloads require login), vaikimisi väljas. Kui see on sees, ei saa külalised midagi alla laadida; lülita see sisse ainult siis, kui nõuad ka kontot.
- Juurdepääs pärast makset (Grant access to downloadable products after payment), vaikimisi sees: klient saab alla laadida niipea, kui tellimuse olek on Töötluses, ehk kohe pärast õnnestunud makset. Kui see on väljas, siis alles pärast olekut Täidetud.
Lepingust taganemine digisisu puhul
Tavalise teekannu puhul on kliendil 14 päeva mõtlemisaega (õppetund 5.2). Allalaadimise puhul on see keeruline: kellel pdf on, sellel see jääb, ka pärast taganemist. Seepärast on olemas erand, aga ainult tingimustel. ELis on see richtlijn 2011/83/EU artiklis 16 (direktiiv 2011/83/EL); Hollandis Hollandi tsiviilseadustiku (BW) artikli 6:230p punktis g. Taganemisõigust ei ole digisisu puhul, mida ei tarnita füüsilisel andmekandjal, kui:
- tarnimist alustati tarbija sõnaselge eelneva nõusolekuga;
- tarbija on kinnitanud, et loobub sellega oma taganemisõigusest; ja
- sina oled selle kohta andnud kinnituse (lepingu kinnituses, püsival andmekandjal, näiteks tellimuskirjas).
Kui üks neist kolmest puudub, jääb kliendile taganemisõigus, isegi kui ta on juba alla laadinud. Belgias ja Saksamaal kehtib sama ELi reegel nende oma seaduses (vt õppetund 5.2). Eestis on taganemisõigus sätestatud võlaõigusseaduses (VÕS).
WooCommerce ei korralda seda iseenesest. Sul on vaja:
- kohustuslikku linnukest kassas, ainult siis, kui ostukorvis on digisisu, tekstiga nagu „Nõustun, et tarnimine algab kohe, ja tean, et kaotan sellega oma taganemisõiguse“;
- sama teksti kinnitusena nende toodete tellimuskirjas;
- õiget lauset oma taganemisteabes, et see kehtib allalaadimiste kohta.
On laiendusi, mis sellise linnukese lisavad; kassaplokil on ka võimalusi lisaväljade jaoks. Hinda neid nagu iga pluginat. Eelnevalt märgitud linnuke ei loe sõnaselgeks nõusolekuks (õppetund 5.4).
Pane tähele erinevust virtuaalsete teenustega, näiteks kindlal kuupäeval toimuva töötoaga. Seal kehtivad teenuste reeglid, teiste eranditega. Loe õppetundi 5.2.
Kokkuvõte
- Virtuaalne = midagi ei saadeta; allalaaditav = failid pärast makset. Pdf on tavaliselt mõlemat.
- Vali Sunnitud allalaadimised või X-Accel-Redirect/X-Sendfile; Ainult ümbersuunamine on ebaturvaline.
- Kaust
woocommerce_uploadspeab olema suletud:.htaccessApache’il ja LiteSpeedil, serverireegel nginxil. Testi päris faili, mitte ainult kausta. - Hoia heakskiidetud allalaadimiskaustade loend lühike ja määra mõistlikud limiidid.
- Allalaadimiste puhul puudub taganemisõigus ainult sõnaselge nõusoleku, õigusest loobumise ja kinnituse korral; WooCommerce ei tee seda iseenesest. Eestis reguleerib taganemisõigust võlaõigusseadus (VÕS).
Test (quiz)
Ülesanne
Ülesanne A3.3: Kas sinu allalaaditavad failid on kaitstud? See ülesanne pärib teid, millele ei viita ükski link, ja töötab seepärast ainult sinu enda poe puhul. Kõigepealt tõendad, et domeen on sinu: lisad TXT-kirje _weboke-cursus.<sinu domeen> koodiga, mille saad, või paned üles faili /.well-known/weboke-cursus-<kood>.txt, mille sees on see kood. Seejärel sisesta oma poe aadress ja soovi korral ühe allalaaditava faili tee nii, nagu WooCommerce seda toote juures näitab (see algab /wp-content/uploads/woocommerce_uploads/). Programm pärib kausta (ümbersuunamist järgimata, ainult alguse) ja kui sisestasid tee, siis ühe korra selle faili päised. Roheline, kui kaust annab 401, 403 või 404 või lehe ilma failide loendita ja fail annab 401, 403 või 404. Oranž, kui sa faili ei sisestanud: siis kontrolliti ainult kausta ja tühi leht ei ütle piisavalt. Punane, kui kaust näitab failide loendit või kui faili saab lihtsalt alla laadida (200): siis saab igaüks, kellel on aadress, selle ostmata kätte. Programm salvestab ainult olekukoodid, mitte kunagi faili.
Küsimus sulle endale (ei kontrollita): milline allalaadimisviis on sinu poes seadistatud ja kuidas oled korraldanud lepingust taganemise oma digitaalsete toodete puhul?
Lisalugemist
- Digital and downloadable product handling (woocommerce.com, inglise keeles): https://woocommerce.com/document/digital-downloadable-product-handling/
- Tasuta WordPressi kursus 7.4: Saidi tugevdamine: õigused, päised ja turvapluginad
- Keelatud (403): sul pole õigust avada / selles serveris
- Hollandi tsiviilseadustik (Burgerlijk Wetboek), 6. raamat, artikkel 6:230p (wetten.overheid.nl, hollandi keeles): https://wetten.overheid.nl/BWBR0005289/
- Digitaalsete allalaadimiste kaitsmine WooCommerce'is
Teadmistebaas kirjeldab olukorda WebOké juures (LiteSpeed, .htaccess töötab); teiste pakkujate juures töötab see sarnaselt, välja arvatud nginxi puhul.
