Modul 3 · 3.3
Digitálne a virtuálne produkty
Modul 3: Produkty · Čas čítania: 11 min.
Cieľ lekcie: Po tejto lekcii dokážete bezpečne predávať digitálne a virtuálne produkty: zvolíte bezpečný spôsob sťahovania, ochránite priečinok so súbormi, nastavíte limity a správne vyriešite právo odstúpiť od zmluvy pri digitálnom obsahu.
Kľúčové pojmy: virtuálny produkt, produkt na stiahnutie, odkaz na stiahnutie, limit sťahovania, dátum platnosti, spôsob sťahovania (Vynútiť stiahnutie, X-Accel-Redirect/X-Sendfile, Len presmerovanie), woocommerce_uploads, .htaccess, nginx, schválené priečinky na stiahnutie (Approved download directories), prístup po zaplatení, digitálny obsah, výslovný súhlas, vzdanie sa práva odstúpiť od zmluvy
Virtuálne a na stiahnutie: dve rôzne začiarkavacie políčka
Pri jednoduchom produkte alebo variante uvidíte dve začiarkavacie políčka. Vyzerajú podobne, ale robia niečo iné:
- Virtuálne (Virtual) znamená: nič sa neposiela. WooCommerce neúčtuje poštovné a pri pokladni nežiada adresu doručenia (ak je všetko v košíku virtuálne). Napríklad ochutnávka čaju na mieste, darčeková poukážka poslaná e-mailom alebo online workshop.
- Na stiahnutie (Downloadable) znamená: po zaplatení dostane zákazník jeden alebo viac súborov. WooCommerce vytvorí pre každého zákazníka odkaz na stiahnutie a zobrazí ho v potvrdzujúcom e-maile a v sekcii Môj účet > Na stiahnutie.
Digitálna kniha receptov vo formáte pdf je zvyčajne oboje: nič sa neposiela poštou a je tu súbor. Tlačená kniha receptov s pdf zadarmo je na stiahnutie, ale nie je virtuálna: kniha sa poštou posiela.
Theehuis Example predáva „Receptenboek Thee en Taart“ (kniha receptov Čaj a koláč) ako pdf za € 9,95. Políčka: virtuálne a na stiahnutie.
Ako funguje sťahovanie a prečo záleží na spôsobe
Keď pri produkte na stiahnutie nahráte súbor, WooCommerce ho uloží do priečinka wp-content/uploads/woocommerce_uploads/. Štandardne pridá za názov súboru náhodný reťazec znakov (nastavenie „Append a unique string to filename for security“, štandardne zapnuté). Zákazník nikdy nedostane túto adresu, ale odkaz do vášho e-shopu s kľúčom objednávky a kódom na stiahnutie. WooCommerce pri každom kliknutí skontroluje: patrí toto stiahnutie k zaplatenej objednávke, nie je vyčerpaný limit, nevypršala platnosť? Až potom zákazník dostane súbor.
Ako sa súbor potom k zákazníkovi dostane, zvolíte v WooCommerce > Nastavenia > Produkty > Produkty na stiahnutie, pri spôsobe sťahovania (File download method):
| Spôsob | Ako funguje | Bezpečnosť |
|---|---|---|
| Vynútiť stiahnutie (Force downloads, štandardne) | PHP načíta súbor a samo ho odošle | Skutočná adresa zostáva skrytá. Veľké súbory sa na niektorých serveroch môžu zasekávať alebo naraziť na časový limit PHP |
| X-Accel-Redirect/X-Sendfile | PHP kontroluje, súbor posiela webový server | Rovnako bezpečné a lepšie pre veľké súbory; webový server to musí podporovať (pri Apache je potrebný modul mod_xsendfile, nginx pozná X-Accel-Redirect). Opýtajte sa svojho poskytovateľa hostingu |
| Len presmerovanie (Redirect only) | WooCommerce presmeruje zákazníka na skutočnú adresu súboru | Nebezpečné: kto má adresu, môže ju zdieľať a súbor sa dá získať bez nákupu. WooCommerce ho samo označuje ako „Insecure“ |
Zvoľte teda Vynútiť stiahnutie alebo X-Sendfile. Presmerovanie je len núdzové riešenie a nastavenie „Allow using redirect mode (insecure) as a last resort“ umožní WooCommerce prepnúť na presmerovanie, keď iný spôsob zlyhá; nechajte ho vypnuté, pokiaľ neviete prečo.
Ochrana priečinka
Pri spôsobe Vynútiť stiahnutie alebo X-Sendfile musí byť priečinok woocommerce_uploads pre bežných návštevníkov uzavretý. Inak si súbor môže priamo stiahnuť ktokoľvek, kto uhádne názov súboru alebo ho vyčíta z uniknutého odkazu. WooCommerce preto pri inštalácii vloží do tohto priečinka dva súbory:
- prázdny
index.html, aby priečinok nezobrazoval zoznam súborov; .htaccesssdeny from all(pri spôsobe Len presmerovanie:Options -Indexes).
Súbor .htaccess funguje na Apache a LiteSpeed (ako pri WebOké a mnohých iných zdieľaných hostingoch). Na nginx webový server .htaccess nečíta. Tam musí byť v konfigurácii servera pravidlo, ktoré priečinok zablokuje. Na spravovanom nginx hostingu to niekedy zariadi poskytovateľ; na vlastnom VPS to musíte urobiť sami. WooCommerce to samo kontroluje a zobrazí upozornenie v administrácii (a v sekcii Zdravie webovej stránky), ak priečinok nevyzerá chránený.
Na niekoľko vecí si dajte pozor:
- Prázdna odpoveď 200 nie je dôkaz. Ak si vyžiadate priečinok a uvidíte prázdnu stránku, môže to byť prázdny
index.html, zatiaľ čo samotné súbory sú prístupné. Preto otestujte aj jeden súbor (úloha to robí). - Súbory zvonka. Pri produkte môžete zadať aj odkaz na súbor uložený inde. Na to má WooCommerce zoznam schválených priečinkov na stiahnutie (Approved download directories): ako súbor na stiahnutie sa smú použiť len súbory z týchto priečinkov alebo z týchto adries. Nikto s administrátorskými právami tak pri produkte nemôže omylom ani úmyselne ponúknuť na stiahnutie ľubovoľný súbor zo servera. Udržujte tento zoznam krátky.
- Zálohy a staging. Priečinok je súčasťou vašej zálohy. V stagingovom prostredí sú teda aj vaše platené súbory: staging ochráňte (lekcia 7.3).
Limity a prístup
Pri každom produkte na stiahnutie alebo variante nastavíte:
- Limit sťahovania (Download limit): koľkokrát môže zákazník sťahovať. Prázdne pole znamená bez obmedzenia. Limit napríklad 5 obmedzí zdieľanie, ale vyvolá sťažnosti, keď si niekto kúpi nový notebook. Zvoľte niečo rozumné a pomôžte zákazníkom, ktorí o to požiadajú.
- Dátum platnosti (Download expiry): po koľkých dňoch odkaz prestane fungovať.
Všeobecné nastavenia v sekcii Produkty na stiahnutie:
- Sťahovanie vyžaduje prihlásenie (Downloads require login), štandardne vypnuté. Zapnuté znamená, že hostia nemôžu nič stiahnuť; zapnite ho len vtedy, ak vyžadujete aj zákaznícke účty.
- Prístup po zaplatení (Grant access to downloadable products after payment), štandardne zapnuté: zákazník môže sťahovať, len čo má objednávka stav Spracováva sa, teda hneď po úspešnej platbe. Ak je vypnuté, až po stave Vybavená.
Odstúpenie od zmluvy pri digitálnom obsahu
Pri bežnej čajovej kanvici má zákazník 14 dní na rozmyslenie (lekcia 5.2). Pri súbore na stiahnutie je to zložité: kto má pdf, ten ho má aj po odstúpení od zmluvy. Preto existuje výnimka, ale len za určitých podmienok. V EÚ je v článku 16 smernice 2011/83/EÚ; v Holandsku v článku 6:230p písm. g holandského Občianskeho zákonníka (BW). Právo odstúpiť od zmluvy neplatí pri digitálnom obsahu, ktorý nie je dodaný na hmotnom nosiči, ak:
- sa dodávanie začalo s výslovným predchádzajúcim súhlasom spotrebiteľa;
- spotrebiteľ vyhlásil, že sa tým vzdáva svojho práva odstúpiť od zmluvy; a
- vy ste mu to potvrdili (v potvrdení zmluvy, na trvanlivom nosiči, napríklad v e-maile k objednávke).
Ak niektorá z týchto troch podmienok chýba, zákazníkovi zostáva právo odstúpiť od zmluvy, aj keď už súbor stiahol. V Belgicku a Nemecku platí rovnaké pravidlo EÚ vo vlastnom zákone (pozri lekciu 5.2). Na Slovensku ho upravuje zákon č. 108/2024 Z. z. o ochrane spotrebiteľa, ktorý platí od 1. mája 2024 a upravuje aj zmluvy uzavierané na diaľku.
WooCommerce to nerieši automaticky. Potrebujete:
- povinné začiarkavacie políčko v pokladni, len ak je v košíku digitálny obsah, s textom ako „Súhlasím s tým, že dodanie sa začne okamžite, a beriem na vedomie, že tým strácam právo odstúpiť od zmluvy“;
- rovnaký text ako potvrdenie v e-maile k objednávke pre tieto produkty;
- správnu vetu vo vašich informáciách o práve odstúpiť od zmluvy, že to platí pre súbory na stiahnutie.
Existujú rozšírenia, ktoré takéto políčko pridajú; blok pokladne má tiež možnosti pre ďalšie polia. Posúďte ich ako každý iný plugin. Políčko, ktoré je vopred začiarknuté, sa nepovažuje za výslovný súhlas (lekcia 5.4).
Pozor na rozdiel oproti virtuálnym službám, ako je workshop v určitý deň. Tam platia pravidlá pre služby s inými výnimkami. Prečítajte si lekciu 5.2.
Zhrnutie
- Virtuálne = nič sa neposiela; na stiahnutie = súbory po zaplatení. Pdf je zvyčajne oboje.
- Zvoľte Vynútiť stiahnutie alebo X-Accel-Redirect/X-Sendfile; Len presmerovanie je nebezpečné.
- Priečinok
woocommerce_uploadsmusí byť uzavretý:.htaccessna Apache a LiteSpeed, pravidlo servera na nginx. Otestujte skutočný súbor, nielen priečinok. - Udržujte zoznam schválených priečinkov na stiahnutie krátky a nastavte rozumné limity.
- Právo odstúpiť od zmluvy pri súboroch na stiahnutie zaniká len s výslovným súhlasom, vzdaním sa práva a potvrdením; WooCommerce to nerobí automaticky. Na Slovensku platí zákon č. 108/2024 Z. z. o ochrane spotrebiteľa.
Kvíz
Úloha
Úloha A3.3: Sú vaše súbory na stiahnutie chránené? Táto úloha vyžaduje cesty, na ktoré nevedú odkazy, a preto funguje len pre váš vlastný e-shop. Najprv preukážete, že doména patrí vám: nastavíte TXT záznam _weboke-cursus.<jouw domein> s kódom, ktorý dostanete, alebo umiestnite súbor /.well-known/weboke-cursus-<code>.txt s týmto kódom. Potom zadajte adresu svojho e-shopu a ak chcete, aj cestu k jednému súboru na stiahnutie tak, ako ju WooCommerce zobrazuje pri produkte (začína sa na /wp-content/uploads/woocommerce_uploads/). Program si vyžiada priečinok (bez presmerovania, len začiatok) a ak ste zadali cestu, raz aj hlavičky tohto súboru. Zelená, ak priečinok vráti 401, 403 alebo 404, alebo stránku bez zoznamu súborov, a súbor vráti 401, 403 alebo 404. Oranžová, ak ste nezadali súbor: vtedy sa skontroloval len priečinok a prázdna stránka nehovorí dosť. Červená, ak priečinok zobrazuje zoznam súborov alebo ak sa súbor dá normálne stiahnuť (200): vtedy si ho môže ktokoľvek s adresou stiahnuť bez nákupu. Program ukladá len stavové kódy, nikdy nie samotný súbor.
Otázka pre vás (nekontroluje sa): aký spôsob sťahovania je nastavený vo vašom e-shope a ako ste vyriešili odstúpenie od zmluvy pri svojich digitálnych produktoch?
Ďalšie čítanie
- Digital and downloadable product handling (woocommerce.com, anglicky): https://woocommerce.com/document/digital-downloadable-product-handling/
- Bezplatný kurz WordPress 7.4: Zabezpečenie stránky: oprávnenia, hlavičky a bezpečnostné pluginy
- Zakázané (403): Nemáte oprávnenie na prístup k / na tomto serveri
- Holandský Občiansky zákonník (Burgerlijk Wetboek), kniha 6, článok 6:230p (wetten.overheid.nl, holandsky): https://wetten.overheid.nl/BWBR0005289/
- Zabezpečenie digitálnych súborov na stiahnutie vo WooCommerce
Databáza znalostí opisuje situáciu pri WebOké (LiteSpeed, .htaccess funguje); u iných poskytovateľov to funguje podobne, okrem nginx.
