Segurança e SSL

Excluir um diretório ou ficheiro ao proteger um diretório com utilizador e palavra-passe

Revisto a 3 min de leitura acessos palavras-passe .htaccess

O cPanel dispõe da opção Directory Privacy, que permite proteger um diretório com utilizador e palavra-passe.

A utilidade desta função vai desde proteger o acesso a um site em desenvolvimento até, no caso do WordPress, acrescentar uma camada adicional de proteção ao diretório wp-admin.

Mas por vezes pode ser necessário excluir um ficheiro ou diretório desta proteção. Seguindo o exemplo do wp-admin, há plugins e temas que fazem chamadas a admin-ajax.php e, se protegermos o acesso a wp-admin, estas chamadas podem falhar com um pedido de autenticação adicional.

Para isso, podemos acrescentar uma regra no .htaccess que exclua apenas o ficheiro exato que deva ser público. No Apache 2.4, use a sintaxe moderna Require e coloque a exceção no .htaccess do diretório protegido, depois de verificar que esse endpoint aplica a sua própria autorização e validação:

<Files "admin-ajax.php">
    Require all granted
</Files>

Neste exemplo, excluímos apenas o ficheiro exato admin-ajax.php da autenticação básica. A exceção não dispensa o WordPress de validar nonces, permissões e sessão em cada ação sensível.

Não substitua o ficheiro por um padrão amplo nem exclua diretórios administrativos completos como wp-admin: deixaria sem essa camada de proteção todos os seus endpoints atuais e futuros. Se outro recurso precisar de acesso público, crie uma exceção independente para o seu nome exato, teste apenas esse URL e confirme que o resto do diretório continua a pedir autenticação.

Verifique a exceção sem abrir o resto

Guarde uma cópia do .htaccess fora do diretório público antes de o editar. Respeite as regras da aplicação e reveja se já existem outros blocos Require, Files ou FilesMatch que possam combinar-se ou substituir-se.

A partir de uma sessão sem autenticação, teste o URL excecionado e outro do mesmo diretório que deva continuar protegido. Uma resposta pública do endpoint não significa que as suas ações sensíveis devam ser executadas sem autorização da aplicação.

Se aparecer um erro 500, reponha a versão anterior e reveja o registo de erros. Se precisar de abrir um subdiretório inteiro, identifique primeiro os seus ficheiros e acessos: o exemplo de um ficheiro não deve ser alargado substituindo-o por um caráter universal.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.