- O que é um ficheiro .htaccess?
- O que é um ficheiro .htpasswd?
- Onde deve ser guardado o ficheiro .htpasswd?
- Proteção por palavra-passe com .htaccess – Exemplo
- É possível proteger apenas subpastas?
- Proteção por palavra-passe para domínios ou subdomínios específicos
- Com que servidores web funciona?
- Vantagens e desvantagens da proteção por .htaccess
- Quão segura é a proteção por palavra-passe?
- Que alternativas existem?
- Lista de endereços IP permitidos
- Plugin de modo de manutenção
- Autenticação no servidor (Nginx)
- Proteção por palavra-passe no painel de alojamento
- Restrição de acesso baseada em passkey ou token
Como ativar um modo de manutenção seguro e limitar o acesso a utilizadores selecionados
Ao desenvolver um site, rever conteúdos ou mostrar antecipadamente uma nova página a um cliente, esta não deve necessariamente estar acessível a todos os visitantes. Uma solução simples e muito utilizada consiste na proteção por palavra-passe através de .htaccess e .htpasswd. Esta proteção funciona no servidor e impede que visitantes sem credenciais vejam o conteúdo do site.
Neste artigo, explico passo a passo como funciona a proteção por palavra-passe, quando é útil, quais são as suas vantagens e desvantagens e que alternativas existem. No final, poderá proteger de forma segura e correta todo o site ou subpastas específicas através de .htaccess.
O que é um ficheiro .htaccess?
O ficheiro .htaccess é um ficheiro de configuração utilizado principalmente por servidores web como Apache e LiteSpeed. Encontra-se na pasta do site e permite aplicar definições no servidor sem alterar a configuração principal do servidor web.
Funções habituais do ficheiro .htaccess:
- Ativar a proteção por palavra-passe
- Criar redirecionamentos e regras de reescrita
- Configurar a cache
- Definir páginas de erro
- Permitir ou bloquear o acesso de determinados endereços IP
O ficheiro .htaccess é ideal para a proteção por palavra-passe, pois é configurado rapidamente e não requer alterações diretas no servidor.
O que é um ficheiro .htpasswd?
O ficheiro .htpasswd contém utilizadores e palavras-passe cifradas que o servidor web utiliza para autenticação. É guardado separadamente, normalmente fora do diretório web público, para que não fique acessível a partir do exterior.
Exemplo:
user:secret
#beispiel: test:test123242345
test: $apr1$547x6czg$ZOB.RvFfT2JdN1KfOvuUF0
Importante:
As palavras-passe são guardadas de forma cifrada. Os formatos Apache com MD5, SHA ou bcrypt são os mais utilizados. Nunca devem ser guardadas palavras-passe sem cifragem.
Pode gerar palavras-passe com:
- geradores de htpasswd
- Consola Linux:
htpasswd -nb utilizador palavra-passe - ferramentas online com SSL, apenas para testes
Onde deve ser guardado o ficheiro .htpasswd?
O ficheiro .htpasswd deve ficar sempre fora da raiz web pública, nunca em /public_html, /www ou /htdocs. Um caminho seguro seria, por exemplo:
/home/username/secure/.htpasswd
Ou, em ambientes de alojamento:
/var/www/.secrets/htpasswd
O caminho deve ser escolhido de forma que não seja acessível através do navegador.
Proteção por palavra-passe com .htaccess – Exemplo
A configuração básica tem o seguinte aspeto:
AuthUserFile /home/benutzer/secure/.htpasswd
AuthGroupFile /dev/null
AuthName "Passwortgeschuetzter Bereich"
AuthType Basic
Require valid-user
Assim que este ficheiro for colocado na pasta pretendida, essa pasta e todas as subpastas ficam protegidas.
É possível proteger apenas subpastas?
Sim, é até bastante comum. Se tiver uma versão beta na subpasta /pre-visualizacao, crie aí um ficheiro .htaccess próprio. O resto do site continuará acessível.
Proteção por palavra-passe para domínios ou subdomínios específicos
Também funciona sem problemas. Cada domínio e subdomínio pode utilizar os seus próprios ficheiros .htaccess. Assim, pode proteger completamente um domínio de testes enquanto o domínio principal permanece acessível.
Exemplo de configuração dependente do domínio:
SetEnvIf Host my-domain.test passreq
AuthType Basic
AuthName "Password Required"
AuthUserFile /home/user1234/meinewebsite/htpwd/.htpasswd
Require valid-user
Order allow,deny
Allow from all
Deny from env=passreq
Satisfy any
Desta forma, pode decidir, consoante o nome do domínio, se é necessária uma palavra-passe.
Com que servidores web funciona?
O método .htaccess funciona com:
- Apache
- LiteSpeed
- OpenLiteSpeed, com algumas limitações
.htaccess não é suportado por:
- Nginx
- IIS (Microsoft)
No Nginx, a proteção por palavra-passe deve ser configurada na configuração do servidor e não através de .htaccess.
Vantagens e desvantagens da proteção por .htaccess
| Vantagem | Desvantagem |
|---|---|
| Muito fácil de configurar | Não funciona com Nginx sem acesso à configuração do servidor |
| Não requer plugins nem software | A janela de início de sessão não pode ser personalizada |
| Proteção no servidor | A autenticação Basic Auth envia o nome de utilizador e a palavra-passe codificados, mas não cifrados |
| Ideal para um modo de manutenção ou uma pré-visualização protegida | Inseguro sem HTTPS |
| Funciona para sites completos ou pastas específicas | Pode tornar os sistemas de cache mais lentos |
Importante:
Utilize sempre HTTPS para que as credenciais sejam transmitidas de forma cifrada.
Quão segura é a proteção por palavra-passe?
Quando configurada corretamente, a autenticação Basic Auth oferece segurança suficiente para páginas de pré-visualização, ferramentas internas ou ambientes de desenvolvimento. No entanto, não substitui um sistema de início de sessão complexo para áreas de membros ou aplicações web.
Recomendações para segurança máxima:
- Ativar HTTPS
- Gerar palavras-passe com bcrypt
- Guardar o ficheiro .htpasswd fora do diretório web
- Utilizar também uma lista de endereços IP permitidos, se necessário
Que alternativas existem?
Lista de endereços IP permitidos
Permitir o acesso apenas a partir de determinados endereços IP:
Order deny,allow
Deny from all
Allow from 123.123.123.123
Plugin de modo de manutenção
Para WordPress, Joomla, Shopware e outros CMS existem plugins que apresentam um modo de manutenção com um modelo próprio.
Autenticação no servidor (Nginx)
No Nginx, a autenticação é definida no ficheiro server.conf.
Proteção por palavra-passe no painel de alojamento
O Plesk e o cPanel oferecem funções próprias de proteção de diretórios por palavra-passe.
Restrição de acesso baseada em passkey ou token
Os ambientes de desenvolvimento modernos podem utilizar ligações com token em vez de pedidos de palavra-passe.
Este artigo foi traduzido com a ajuda de IA.