Situação inicial
Para um site que estou configurando, eu estava analisando todo o campo de segurança de uploads / downloads e restringindo o acesso a eles com base nas funções / capacidades do usuário. Claro que li algumas das perguntas anteriores relacionadas ao tópico (geral) aqui, por razões de referência as mais importantes / interessantes que encontrei:
- Como proteger uploads, se o usuário não estiver logado?
- Como restringir o acesso aos arquivos enviados?
- Restringindo o acesso aos arquivos em uma pasta específica
- Como tornar o upload de mídia privado?
- Mesclando o script de download do PHP no `functions.php`
Notas suplementares
Geralmente, não é uma má idéia melhorar ainda mais a segurança da sua instalação do wordpress - por exemplo, protegendo a sua wp-config.php
- há muitas coisas que você pode e deve fazer. Há uma tonelada de informações por aí como fazê-lo. Estou no contexto desta pergunta principalmente concernd sobre meus uploads / downloads.
Os uploads do Wordpress não são protegidos, todos podem navegar na uploads
pasta, a menos que você a impeça com .htaccess
:
Options All -Indexes
O .htaccess
arquivo deve ser colocado dentro da uploads
pasta. Mas isso realmente não os protege, apenas torna mais difícil encontrar os arquivos. Além disso, você pode impedir hotlinking
, restringindo essencialmente o acesso com base em referrer
- embora esse seja um pouco diferente, caso eu tenha mencionado isso, não estou mais elaborando, você pode encontrar muitas informações sobre isso.
É claro que tem a possibilidade de tornar as postagens privadas ou criar um tipo de postagem personalizado com arquivos de modelo adequados para torná-la privada, mas isso não protege seus arquivos. O mesmo pode ser dito para agrupar os arquivos em condicionais como is_user_logged_in()
ou is_admin()
.
Em uma nota de rodapé, existem muitos plugins por aí que prometem tornar seus arquivos seguros e protegidos, mas muitos deles apenas fingem fazê-lo, algumas das razões acima. Só estou dizendo isso porque tenho certeza de que isso não é conhecido por todos - então esteja ciente disso.
Objetivo
Minha intenção era restringir o acesso a (alguns) envios e, respectivamente, downloads. E para garantir que ninguém indesejado possa ter acesso a eles, não por acaso ou se alguém souber o nome do arquivo, os arquivos deverão ser realmente privados e seguros. Afinal, apenas certas pessoas devem ter acesso sem exceções.
Além disso, não havia necessidade de privatizar todo o site, o que seria contraproducente - ele é usado para fins de apresentação pública. Além disso, eu queria que a solução fosse facilmente utilizável, pelo simples motivo de que algumas das pessoas que trabalham com ela não são exatamente especialistas em computadores, como costuma ser o caso.
Questão
Daí a questão: existe uma maneira (relativamente) simples de restringir o acesso a (alguns) envios e os respectivos downloads? E como eu fiz, isso significa uma maneira de realmente protegê-los e protegê-los?
Respostas:
Estou respondendo à minha própria pergunta, porque encontrei uma solução, mas estou realmente interessado em suas opiniões. Ou talvez você tenha uma solução muito melhor, se sim, eu realmente gostaria aqui.
Resultado da pesquisa
Meus resultados de pesquisa foram:
1. obter os arquivos fora da raiz,
www
pasta do documento ;2. proibir qualquer acesso direto à pasta que contém os arquivos;
3. deixe um script manipular as solicitações dos arquivos;
As fontes para esses pontos estão - pelo menos na maior parte - incluídas na minha pergunta.
Solução
files
será criada dentrowp-content
do processo;.htaccess
arquivo à novafiles
pasta:.htaccess
:Options All -Indexes
Order Deny,Allow
Deny from all
download method
;output file
;allowed to download
;Pensamentos finais
Estou pensando que a solução segue os resultados da pesquisa. Além de colocar os arquivos do lado de fora. Mas restringir o acesso a / proteger o diretório e permitir que um script lide com solicitações de arquivo é preenchido. A restrição de acesso é tratada pelo
.htaccess
e, neste caso, o script é o pluginwp-downloadmanger
.Notas suplementares
download method
paraoutput file
e é claro que é necessário que o
.htaccess
arquivo esteja no lugarpara verificar se o plug-in assume o papel do script, dê uma olhada nas
wp-downloadmanger.php
linhas 207 a 227 (versão 1.6.1); isso significa que é um ponto complementar à informação vinculadafonte