Securizarea descărcărilor digitale în WooCommerce
Vindeți un e-book, un pdf, muzică sau software prin WooCommerce? Atunci doriți ca numai clienții care au plătit să poată descărca fișierul. WooCommerce rezolvă acest lucru printr-un link de descărcare securizat, dar acesta funcționează corect doar dacă metoda de descărcare este sigură și directorul cu fișiere este protejat. Aici aflați cum funcționează, ce setați și cum verificați că un link direct nu funcționează.
Cum funcționează o descărcare în WooCommerce
Bifați la un produs opțiunea Descărcabil (Downloadable) și încărcați fișierul. WooCommerce îl plasează în directorul wp-content/uploads/woocommerce_uploads/. În mod implicit, adaugă un șir aleatoriu de caractere după numele fișierului, astfel încât numele să fie greu de ghicit. Clientul nu primește niciodată această adresă, ci un link către magazinul dumneavoastră. La fiecare clic, WooCommerce verifică dacă descărcarea corespunde unei comenzi plătite și dacă limita și data de expirare nu au fost încă atinse. Abia atunci clientul primește fișierul.
Dacă nu se expediază nimic prin poștă, bifați și opțiunea Virtual (Virtual). Astfel, WooCommerce nu va calcula costuri de livrare.
Alegeți o metodă de descărcare sigură
Accesați WooCommerce > Setări > Produse > Produse descărcabile și verificați metoda de descărcare (File download method):
| Metodă | Ce se întâmplă | Sigur? |
|---|---|---|
| Forțează descărcările (Force downloads, implicit) | PHP citește fișierul și îl trimite el însuși către client. | Da. La fișiere foarte mari, PHP poate atinge limita de timp. |
| X-Accel-Redirect/X-Sendfile | PHP verifică, serverul web trimite fișierul. | Da, dacă serverul web acceptă această funcție. |
| Doar redirecționare (Redirect only) | Clientul este direcționat către adresa reală a fișierului. | Nu. Oricine cunoaște adresa îl poate distribui. Chiar WooCommerce consideră această metodă nesigură. |
Alegeți Forțează descărcările, cu excepția cazului în care sunteți sigur că X-Sendfile funcționează. De asemenea, dezactivați opțiunea prin care WooCommerce revine, ca ultimă soluție, la redirecționare.
Directorul woocommerce_uploads trebuie să fie protejat
Chiar și cu o metodă sigură, directorul în sine trebuie să fie inaccesibil vizitatorilor obișnuiți. Altfel, oricine cunoaște numele fișierului, de exemplu dintr-un link care a ajuns în circulație, poate descărca fișierul direct. De aceea, WooCommerce plasează la instalare două fișiere în director:
- un fișier
index.htmlgol, astfel încât să nu fie afișată o listă cu fișiere; - un fișier
.htaccesscu reguladeny from all, care refuză toate cererile directe.
Un astfel de fișier .htaccess funcționează pe serverele web care îl citesc, precum Apache și LiteSpeed. Serverele noastre rulează pe LiteSpeed, astfel încât la WebOké această protecție funcționează fără setări suplimentare. Pe un server cu nginx, serverul web nu citește fișierul .htaccess; acolo este necesară o regulă în configurația serverului. Dacă mutați ulterior magazinul dumneavoastră pe un astfel de server, verificați din nou această protecție.
Fișierul .htaccess este ascuns. Dacă doriți să verificați dacă acesta există, consultați Afișarea și editarea fișierelor ascunse precum .htaccess. Nu îl ștergeți.
Verificarea că un link direct nu funcționează
- Deschideți, la un produs descărcabil, adresa fișierului așa cum o afișează WooCommerce. Aceasta începe cu
/wp-content/uploads/woocommerce_uploads/. - Deschideți această adresă într-o fereastră privată, în care nu sunteți autentificat.
- Este în regulă dacă apare un mesaj de eroare 403 Forbidden (sau 401 sau 404). Dacă vedeți sau puteți descărca fișierul pur și simplu, directorul este expus public.
Testați întotdeauna un fișier real, nu doar directorul. O pagină goală la nivelul directorului poate fi fișierul index.html gol, în timp ce fișierele în sine sunt totuși accesibile. Puteți verifica și din linia de comandă: curl -I https://example.com/wp-content/uploads/woocommerce_uploads/bestand.pdf trebuie să returneze 403. Ce înseamnă un 403 citiți în Interzis (403): Nu aveți permisiunea de a accesa / pe acest server.
Limite și acces
- Limita de descărcare și data de expirare se setează per produs sau variație. Un câmp gol înseamnă nelimitat. O limită strictă reduce posibilitatea de distribuire, dar poate genera reclamații atunci când un client cumpără un computer nou.
- Accesul după plată este activat implicit: clientul poate descărca imediat ce plata a fost efectuată cu succes.
- Directoare de descărcare aprobate (Approved download directories): numai fișierele din aceste directoare sau de la aceste adrese pot fi utilizate ca descărcări. Păstrați lista scurtă.
Dacă vindeți conținut digital consumatorilor, stabiliți și modul în care funcționează dreptul de retragere în cazul descărcărilor. WooCommerce nu face acest lucru automat. Acest articol nu reprezintă consultanță juridică; consultați ACM sau un jurist.
Lectură suplimentară
- Digital and downloadable product handling (WooCommerce, în limba engleză)
- Curs gratuit WordPress, lecția 7.4 Securizarea site-ului: drepturi, headere și pluginuri de securitate
