Neste artigo
O que e htpasswd?
Um arquivo htpasswd e uma base de dados em arquivo simples utilizada pelos servidores web Apache e Nginx para armazenar nomes de utilizador e palavras-passe em hash para Autenticação HTTP Basic. Cada linha contem um nome de utilizador e um hash de palavra-passe separados por dois pontos, como admin:$2y$10$abc... O arquivo fornece uma forma simples de proteger recursos web sem necessitar de um sistema de autenticação completo.
O utilitario htpasswd era originalmente parte do projeto Apache HTTP Server, mas o formato de arquivo tornou-se um padrão de facto suportado por muitos servidores web, proxies reversos e ferramentas de desenvolvimento. Os geradores htpasswd modernos suportam multiplos algoritmos de hash incluindo bcrypt, SHA-1 e MD5, sendo o bcrypt a escolha recomendada para segurança.
Como funciona a geração de htpasswd
Gerar uma entrada htpasswd envolve fazer hash de uma palavra-passe em texto simples com um algoritmo escolhido e formata-la junto ao nome de utilizador. A força do hash resultante depende do algoritmo e da sua configuração.
- bcrypt ($2y$) — a opção mais segura, utiliza um fator de custo configuravel (padrão 10) que controla o custo computacional de cada hash, tornando ataques de força bruta impraticaveis
- SHA-1 ({SHA}) — produz um digest SHA-1 codificado em Base64 com prefixo {SHA}; mais rápido que bcrypt mas significativamente mais fraco contra ataques GPU modernos
- MD5 ($apr1$) — variante MD5 personalizada do Apache com sal aleatorio; formato legado ainda suportado mas não recomendado para novas implantações devido a fraquezas conhecidas
Experimente gratuitamente — sem cadastro
Gerar entrada htpasswd →Utilizações comuns de htpasswd
A autenticação baseada em htpasswd e amplamente utilizada para controlo de acesso leve onde um sistema de autenticação completo seria excessivo.
- Proteção de ambientes de staging — restringir o acesso a ambientes de pre-produção para que apenas membros da equipa e partes interessadas possam ver o trabalho em andamento
- Segurança do painel de administração — adicionar uma camada extra de autenticação em frente a paineis de administração CMS, ferramentas de gestão de bases de dados ou dashboards de monitorização
- Acesso ao ambiente de desenvolvimento — proteger servidores de desenvolvimento locais ou partilhados contra acesso não autorizado sem configurar OAuth ou LDAP
Perguntas frequentes
Devo usar bcrypt, SHA-1 ou MD5 para htpasswd?
Use sempre bcrypt quando possivel. O bcrypt e projetado especificamente para hash de palavras-passe com um fator de custo configuravel que o torna resistente a ataques de força bruta. SHA-1 e MD5 sao funções hash rapidas não projetadas para palavras-passe — podem ser quebradas ordens de magnitude mais rápido que bcrypt.
Onde devo colocar o arquivo htpasswd no meu servidor?
Armazene o arquivo htpasswd fora da raiz web para evitar que seja servido aos visitantes. Uma localização comum e /etc/apache2/.htpasswd ou /etc/nginx/.htpasswd. Depois referencie-o na configuração do servidor com AuthUserFile (Apache) ou auth_basic_user_file (Nginx). Nunca o coloque num diretório acessivel publicamente.
A autenticação HTTP Basic e suficientemente segura para produção?
A autenticação Basic envia credenciais codificadas em Base64 (não encriptadas) com cada pedido, por isso deve ser sempre utilizada sobre HTTPS. Mesmo com HTTPS, faltam-lhe funcionalidades como gestão de sessões, limitação de taxa e bloqueio de conta. E adequada para cenarios de baixo risco como sites de staging ou ferramentas internas, mas a autenticação de utilizadores em produção deve usar um sistema com sessões baseadas em tokens.