Proteger downloads digitais no WooCommerce
Vende um e-book, um pdf, música ou software através do WooCommerce? Então quer que apenas os clientes pagantes possam obter o ficheiro. O WooCommerce trata disso com uma ligação de download protegida, mas isso só funciona bem se o método de download for seguro e a pasta com os ficheiros estiver fechada. Aqui fica a explicação de como funciona, o que configurar e como verificar que uma ligação direta não funciona.
Como funciona um download no WooCommerce
Assinale num produto a opção Para download (Downloadable) e carregue o ficheiro. O WooCommerce coloca-o na pasta wp-content/uploads/woocommerce_uploads/. Por predefinição, acrescenta uma sequência aleatória de carateres ao nome do ficheiro, para que o nome seja difícil de adivinhar. O cliente nunca recebe esse endereço, mas sim uma ligação para a sua loja. A cada clique, o WooCommerce verifica se o download pertence a uma encomenda paga e se o limite e a data de validade ainda não foram atingidos. Só então o cliente recebe o ficheiro.
Se não houver envio físico, assinale também a opção Virtual (Virtual). Assim, o WooCommerce não cobra custos de envio.
Escolha um método de download seguro
Vá a WooCommerce > Definições > Produtos > Produtos para download e consulte o método de download (File download method):
| Método | O que acontece | Seguro? |
|---|---|---|
| Forçar downloads (Force downloads, predefinição) | O PHP lê o ficheiro e envia-o diretamente para o cliente. | Sim. Em ficheiros muito grandes, o PHP pode atingir o limite de tempo. |
| X-Accel-Redirect/X-Sendfile | O PHP verifica, o servidor web envia o ficheiro. | Sim, se o servidor web o suportar. |
| Apenas redirecionar (Redirect only) | O cliente é encaminhado para o endereço real do ficheiro. | Não. Quem tiver o endereço pode partilhá-lo. O próprio WooCommerce classifica este método como inseguro. |
Escolha Forçar downloads, a menos que tenha a certeza de que o X-Sendfile funciona. Desative também a opção que faz o WooCommerce recorrer ao redirecionamento como último recurso.
A pasta woocommerce_uploads tem de estar fechada
Com um método seguro, a própria pasta também tem de estar fechada para visitantes comuns. Caso contrário, alguém que conheça o nome do ficheiro, por exemplo através de uma ligação divulgada, pode obter o ficheiro diretamente. Por isso, o WooCommerce coloca, durante a instalação, dois ficheiros na pasta:
- um ficheiro
index.htmlvazio, para que não seja apresentada nenhuma lista de ficheiros; - um ficheiro
.htaccesscom a regradeny from all, que recusa todos os pedidos diretos.
Este tipo de ficheiro .htaccess funciona em servidores web que o interpretam, como o Apache e o LiteSpeed. Os nossos servidores funcionam com LiteSpeed, pelo que, na WebOké, esta proteção funciona sem configurações adicionais. Num servidor com nginx, o servidor web não lê o ficheiro .htaccess; nesse caso, é necessária uma regra na configuração do servidor. Se mais tarde mudar a sua loja para um servidor desse tipo, volte a verificar esta questão.
O ficheiro .htaccess está oculto. Se quiser ver se existe, consulte Mostrar e editar ficheiros ocultos como o .htaccess. Não o elimine.
Verificar que uma ligação direta não funciona
- Num produto para download, abra o endereço do ficheiro tal como o WooCommerce o apresenta. Começa com
/wp-content/uploads/woocommerce_uploads/. - Abra esse endereço numa janela privada, na qual não tenha sessão iniciada.
- O ideal é receber uma mensagem de erro 403 Forbidden (ou 401 ou 404). Se conseguir ver ou transferir o ficheiro normalmente, a pasta está acessível.
Teste sempre um ficheiro real, não apenas a pasta. Uma página vazia na pasta pode ser apenas o ficheiro index.html vazio, enquanto os próprios ficheiros continuam acessíveis. Também é possível testar na linha de comandos: curl -I https://example.com/wp-content/uploads/woocommerce_uploads/ficheiro.pdf deve devolver um 403. O que significa um 403 pode ler em Forbidden (403): Não tem permissão para aceder a / neste servidor.
Limites e acesso
- O limite de downloads e a data de validade configuram-se por produto ou variação. Se deixar em branco, é ilimitado. Um limite rigoroso reduz a partilha, mas gera reclamações se alguém comprar um computador novo.
- O acesso após o pagamento está ativado por predefinição: o cliente pode fazer o download assim que o pagamento for concluído com sucesso.
- Pastas de download aprovadas (Approved download directories): apenas ficheiros destas pastas ou destes endereços podem servir como download. Mantenha a lista curta.
Se vender conteúdo digital a consumidores, defina também como funciona o direito de resolução em downloads. O WooCommerce não trata disso automaticamente. Este artigo não constitui aconselhamento jurídico; consulte a ACM ou peça aconselhamento a um jurista.
Para saber mais
- Digital and downloadable product handling (WooCommerce, em inglês)
- Curso gratuito de WordPress, lição 7.4 Reforçar a segurança do site: permissões, cabeçalhos e plugins de segurança
