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?