Eu uso o wordpress para um site privado onde os usuários enviam arquivos. Eu uso o "WordPress Privado" para impedir o acesso ao site se o usuário não estiver logado.
Gostaria de fazer o mesmo com os arquivos enviados na pasta de uploads.
Portanto, se um usuário não estiver logado, ele não poderá acessar: https://xxxxxxx.com/wp-content/uploads/2011/12/xxxxxxx.pdf se tentar acessar, mas não estiver logado, deverá ser redirecionado para a página de login, por exemplo.
Eu encontrei um plugin chamado arquivos privados, mas a última vez que atualizei foi em 2009 e ele parece não funcionar no meu wordpress.
Alguém conhece algum método? O método hotlinking será suficiente para proteger isso?
Eu também encontrei este método:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^.*uploads/private/.*
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule . /index.php [R,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Mas qualquer usuário que replique o cookie pode passar isso certo? Saudações
fonte
Respostas:
Verificar apenas se o cookie existe não é uma proteção rigorosa.
Para obter uma proteção mais forte, você pode passar ou "proxy" todas as solicitações para a pasta carregada (exemplo
uploads
no exemplo a seguir) por meio de um script php:Todas as solicitações para arquivos enviados (que incluem imagens em postagens) iriam para as
dl-file.php
quais, então, é possível verificar se o usuário está logado ou não.Se o usuário não estiver logado, o formulário de login do seu site será mostrado. Depois que o usuário estiver conectado, ele será redirecionado novamente para o arquivo e poderá fazer o download agora.
Exemplar
dl-file.php
.Algo semelhante pode ser encontrado na
\wp-includes\ms-files.php
sua instalação do wordpress, mas essa é para multisite e sem a verificação e redirecionamento de login.Dependendo da quantidade de tráfego que você possui, pode ser melhor integrá-lo ao seu servidor, por exemplo,
X-Accel-Redirect
ouX-Sendfile
cabeçalhos.fonte
Você também pode escrever um plug-in usando o
init
gancho e o valor-get$_GET[ 'file' ];
. Se o usuário tiver esse valor, pule para uma função para verificar os direitos de acesso aos arquivos: Por exemplo, com uma caixa de seleção em uma Meta Box.a função get_file ()
Você também pode adicionar um URL personalizado para arquivos através do gancho
generate_rewrite_rules
fonte
Se você deseja uma abordagem baseada em plug-in para resolver esse problema, aqui está uma solução razoavelmente boa que eu encontrei (finalmente):
https://wordpress.org/plugins/download-monitor/
/wp-content/uploads/dlm_uploads/
Isso significa que qualquer pessoa que não esteja logada não pode baixar o arquivo ou ver a URL real do arquivo. Se alguém não autorizado descobrir o URL do arquivo, o plug-in também interromperá a navegação do usuário no URL real do arquivo, bloqueando o acesso à
/wp-content/uploads/dlm_uploads/
pasta.Bônus: se você estiver fazendo isso em um site em que precisa que os usuários possam fazer login apenas como 'Membros' (mas não possuam permissões do WordPress, como edição de páginas ou administrador), instale o plugin 'Membros' https: // wordpress .org / plugins / members / , crie uma nova função de usuário chamada 'Membro' e ofereça a capacidade única de 'ler', crie um novo usuário no WordPress e certifique-se de atribuir a eles a função de 'Membro'.
Se você deseja proteger o conteúdo das páginas, o plug-in 'Membros' fornece algumas opções ou existem outros plug-ins por aí. Se você deseja colocar um tema na página de login para que os Membros tenham uma aparência melhor do que o formulário de login padrão do WordPress, use algo como 'Tema meu login': https://wordpress.org/plugins/theme-my-login/
fonte