Como proteger um site ou uma única página com senha
Como proteger um site com senha
Como proteger um site ou página com senha (opções reais) | We.Inc
Proteja uma página ou o site inteiro com senha do jeito que realmente funciona: Basic auth no servidor, a senha de página da sua hospedagem ou criador de sites, ou contas de membros, e por que bloqueios só com script falham.
Uma verificação de senha de verdade acontece no servidor antes de a página ser enviada. Use a configuração de senha de página da sua hospedagem ou criador de sites, a autenticação HTTP Basic no Apache ou no Nginx, ou contas de membros de verdade. Uma caixa de senha escrita em JavaScript só esconde a página no navegador; o conteúdo chega do mesmo jeito e qualquer pessoa pode ler o código-fonte.
Formas de colocar senha em um site
Opção
Protege o conteúdo?
Melhor para
Senha de página no criador de sites ou CMS
Sim, verificada pela plataforma
Uma página privada para um cliente ou evento
HTTP Basic auth (Apache, Nginx)
Sim, via HTTPS
Um site de homologação ou uma pasta inteira
Contas de membros
Sim, por pessoa
Áreas privadas pagas ou de longa duração
Prompt em JavaScript ou div escondida
Não
Nada que importe
Digite um nome de usuário e uma senha para ver exatamente o cabeçalho Authorization que o navegador envia na autenticação Basic, e com que facilidade ele volta a ser texto simples. Isso mostra por que o Basic auth só deve rodar via HTTPS. A codificação acontece no seu dispositivo; nada é enviado.
Decida se uma senha compartilhada basta ou se cada pessoa precisa do próprio login.
Em um criador de sites ou no WordPress, procure primeiro uma configuração de visibilidade ou senha da página.
No seu próprio servidor, adicione a autenticação Basic à pasta ou location, com o arquivo de senhas guardado fora da pasta pública da web.
Confirme que o site força HTTPS e depois teste em uma janela anônima do navegador.
Dê ao Basic auth uma senha longa que você não usa em nenhum outro lugar e troque-a quando o projeto ou a prévia terminar.
No WordPress, editores e administradores conseguem ver posts protegidos por senha na tela de edição sem a senha.
Uma página protegida ainda pode mostrar o título. Não coloque detalhes privados no título da página.
Peça também aos buscadores que não mostrem uma página privada com uma tag noindex, mas nunca conte com isso como proteção.
Perguntas frequentes
Dá para proteger uma página com senha só com HTML?
Não. O HTML não tem como verificar uma senha. Tudo o que você coloca no arquivo é baixado por todos os visitantes, então a verificação precisa acontecer no servidor ou na plataforma.
A autenticação HTTP Basic é segura?
Só via HTTPS. A RFC 7617 observa que a senha atravessa a rede em texto claro, porque Base64 é uma codificação, não criptografia, e diz que o esquema não deve proteger informações sensíveis sem algo como HTTPS.
Como protejo uma página com senha no WordPress?
Abra a página ou o post, defina a Visibilidade como Protegido por senha, digite uma senha e atualize. Os visitantes veem o título e um pedido de senha em vez do conteúdo.
Posso proteger um site WordPress inteiro?
A própria documentação do WordPress diz que esconder o site inteiro não faz parte do núcleo, e indica plugins ou regras de servidor como o .htaccess.
O que o navegador mostra no Basic auth?
O servidor responde com 401 e um cabeçalho WWW-Authenticate. O navegador então pede um nome de usuário e uma senha e repete a requisição com um cabeçalho Authorization.
Por que bloqueios só com script falham
Um tutorial comum adiciona um prompt() e compara a resposta com uma senha escrita no mesmo script. O navegador já baixou a página inteira, e a senha fica no código-fonte para quem apertar exibir código-fonte. Desativar o JavaScript pula a verificação por completo.
O mesmo vale para conteúdo escondido com CSS. Se as palavras estão no HTML, elas são públicas.
Escolhendo entre as opções reais
Para uma página que você compartilha com um cliente, a senha de página do seu criador de sites ou CMS é a escolha segura mais rápida. Para uma cópia de homologação de um site, o Basic auth no servidor mantém tudo privado, inclusive para os rastreadores dos buscadores.
Quando pessoas diferentes precisam de acessos diferentes, ou você vai precisar remover alguém depois, use contas. Uma única senha compartilhada não pode ser tirada de uma pessoa sem trocá-la para todo mundo.
Configurações de servidor que realmente protegem uma pasta
Crie o arquivo de senhas com a ferramenta htpasswd que vem com o Apache (por exemplo htpasswd -c /etc/apache2/.htpasswd client) e guarde-o fora da pasta pública da web.
Apache: .htaccess na pasta a proteger
Require valid-user libera qualquer pessoa listada no arquivo de senhas.
Nginx: proteger uma location
O Nginx lê o mesmo formato de arquivo htpasswd. Recarregue o Nginx depois de editar.
O que não fazer: um bloqueio em JavaScript
Mostrado para que você o reconheça. A senha e o conteúdo estão ambos no arquivo que todo visitante baixa.
O que o Basic auth envia
Nome de usuário
Senha
O nome de usuário não pode conter dois-pontos, porque os dois-pontos o separam da senha.
Cabeçalho que o navegador envia em cada requisição
Decodificado por qualquer um que veja a requisição
Base64 não é criptografia. Sem HTTPS, este cabeçalho entrega a senha.