Protection des téléchargements numériques dans WooCommerce
Vendez-vous un e-book, un pdf, de la musique ou un logiciel via WooCommerce ? Vous voulez alors que seuls les clients ayant payé puissent récupérer le fichier. WooCommerce gère cela avec un lien de téléchargement sécurisé, mais cela ne fonctionne bien que si la méthode de téléchargement est sécurisée et que le dossier contenant les fichiers est fermé. Vous découvrirez ici comment cela fonctionne, ce que vous devez configurer et comment vérifier qu'un lien direct ne fonctionne pas.
Comment fonctionne un téléchargement dans WooCommerce
Cochez Téléchargeable (Downloadable) pour un produit et téléversez le fichier. WooCommerce le place dans le dossier wp-content/uploads/woocommerce_uploads/. Par défaut, il ajoute une série de caractères aléatoires après le nom du fichier, de sorte que le nom soit difficile à deviner. Le client ne reçoit jamais cette adresse, mais un lien vers votre boutique. À chaque clic, WooCommerce vérifie si le téléchargement correspond à une commande payée et si la limite et la date d'expiration ne sont pas encore atteintes. Ce n'est qu'alors que le client reçoit le fichier.
Si l'envoi postal n'est pas concerné, cochez également Virtuel (Virtual). WooCommerce ne facture alors pas de frais d'envoi.
Choisir une méthode de téléchargement sécurisée
Allez dans WooCommerce > Réglages > Produits > Produits téléchargeables et consultez la méthode de téléchargement (File download method) :
| Méthode | Ce qui se passe | Sécurisé ? |
|---|---|---|
| Forcer les téléchargements (Force downloads, par défaut) | PHP lit le fichier et l'envoie lui-même au client. | Oui. Pour les fichiers très volumineux, PHP peut atteindre sa limite de temps. |
| X-Accel-Redirect/X-Sendfile | PHP vérifie, le serveur web envoie le fichier. | Oui, si le serveur web le prend en charge. |
| Redirection uniquement (Redirect only) | Le client est redirigé vers l'adresse réelle du fichier. | Non. Quiconque possède l'adresse peut la partager. WooCommerce qualifie lui-même cette méthode de non sécurisée. |
Choisissez Forcer les téléchargements, sauf si vous êtes certain que X-Sendfile fonctionne. Désactivez également l'option permettant à WooCommerce de se replier en dernier recours sur la redirection.
Le dossier woocommerce_uploads doit être fermé
Même avec une méthode sécurisée, le dossier lui-même doit être fermé aux visiteurs ordinaires. Sinon, quiconque connaît le nom du fichier, par exemple à partir d'un lien divulgué, peut récupérer le fichier directement. C'est pourquoi WooCommerce place deux fichiers dans ce dossier lors de l'installation :
- un fichier
index.htmlvide, afin qu'aucune liste de fichiers ne soit visible ; - un fichier
.htaccesscontenant la règledeny from all, qui refuse toutes les requêtes directes.
Un tel fichier .htaccess fonctionne sur les serveurs web qui le lisent, comme Apache et LiteSpeed. Nos serveurs fonctionnent sous LiteSpeed, donc chez WebOké, cette protection fonctionne sans configuration supplémentaire. Sur un serveur fonctionnant sous nginx, le serveur web ne lit pas le fichier .htaccess ; une règle dans la configuration du serveur est alors nécessaire. Si vous déménagez votre boutique vers un tel serveur par la suite, vérifiez-le à nouveau.
Le fichier .htaccess est caché. Pour voir s'il est présent, consultez Afficher et modifier les fichiers cachés comme .htaccess. Ne le supprimez pas.
Vérifier qu'un lien direct ne fonctionne pas
- Ouvrez, pour un produit téléchargeable, l'adresse du fichier telle que WooCommerce l'affiche. Elle commence par
/wp-content/uploads/woocommerce_uploads/. - Ouvrez cette adresse dans une fenêtre de navigation privée, où vous n'êtes pas connecté.
- Un message d'erreur 403 Forbidden (ou 401 ou 404) est bon signe. Si vous voyez ou pouvez télécharger le fichier normalement, le dossier est ouvert.
Testez toujours un véritable fichier, pas seulement le dossier. Une page vide au niveau du dossier peut correspondre au fichier index.html vide, alors que les fichiers eux-mêmes sont ouverts. En ligne de commande, c'est également possible : curl -I https://example.com/wp-content/uploads/woocommerce_uploads/fichier.pdf doit renvoyer un 403. Vous trouverez la signification d'un 403 dans Forbidden (403) : You don't have permission to access / on this server.
Limites et accès
- Limite de téléchargement et date d'expiration se configurent par produit ou par variation. Un champ vide signifie illimité. Une limite stricte réduit le partage, mais entraîne des réclamations si quelqu'un achète un nouvel ordinateur.
- Accès après paiement est activé par défaut : le client peut télécharger dès que le paiement a réussi.
- Dossiers de téléchargement approuvés (Approved download directories) : seuls les fichiers provenant de ces dossiers ou de ces adresses peuvent servir de téléchargement. Gardez cette liste courte.
Si vous vendez du contenu numérique à des consommateurs, organisez également le fonctionnement du droit de rétractation pour les téléchargements. WooCommerce ne le gère pas automatiquement. Cet article ne constitue pas un conseil juridique ; renseignez-vous auprès de l'ACM ou consultez un juriste.
Pour aller plus loin
- Digital and downloadable product handling (WooCommerce, en anglais)
- Cours WordPress gratuit, leçon 7.4 Renforcer la sécurité du site : droits, en-têtes et extensions de sécurité
