Web Servers - htaccess rapidinho: Proteção com senha


Existem vários métodos para proteger determinadas áreas do seu site. Há alguns baseados em liguagens de servidor - como Perl, PHP ou ASP - outros baseados no lado do cliente - como JavaScript - e existe o método “servidor puro” com o arquivo htaccess.

Uma requisição/resposta do lado do servidor é sempre mais segura que uma requisição/resposta dependente do cliente. O método mais seguro, sem dúvida alguma, é através do htaccess… com os devidos cuidados!

O arquivo .htpasswd

A primeira coisa a fazer é criar um arquivo chamado .htpasswd. A convenção do nome para este arquivo é a mesma do .htaccess. É como se fosse um arquivo sem nome com a extensão .htpasswd, ou seja, um ponto seguido de htpasswd.

Este arquivo conterá o nome e a senha encriptada de todos os usuários que poderão ter acesso à area protegida. Por exemplo, o usuário com nome numaboa e senha numaboa pode ser registrado como uma das alternativas abaixo:

numaboa:$1lX5fDPH1jPk
numaboa:62V4UJ/K/c/Wc
numaboa:81×8xIBUZnuLw

É claro que ninguém em sã consicência vai usar nome e senha iguais, mas este é apenas um exemplo. Observe que o nome fornecido é colocado no início, seguido por dois pontos e pela senha encriptada de acordo com o método proposto para o Apache: para Unix e Linux é usada a função crypt() do próprio Apache (descrito na documentação htpasswd do Apache (http://httpd.apache.org/docs/programs/htpasswd.html)) e para Windows é o MD5 modificado para Apache (descrito na rfc131 e que você pode encontrar na Internet RFC/STD/FYI/BCP Archives (http://www.faqs.org/rfcs/rfc1321.html)).

Se você procurar pela web vai encontrar alguns sites que oferecem o serviço de encriptação com os chamados htpasswrd generator. Aqui na Aldeia, também não poderíamos ficar de fora.

Se o seu sistema operacional é o Linux, o programa gerador de senhas provavelmente já está instalado em /usr/bin/htpasswd. Para os usuários do Windows, encontrei um pequeno aplicativo que roda em DOS e que gera as senhas. Se tiver interesse, você fazer o download do htpasswd.exe (76 Kb (http://www.numaboa.com.br/informatica/webmaster/htaccess/htpasswd.exe)). Abra a janela do DOS (botão Iniciar / menu Executar / digitar cmd ou command), vá para o diretório onde se encontra o executável e digite htpasswd.exe para obter a ajuda. Daí, é só gerar o arquivo com as senhas.

Segurança: é óbvio que você deve escolher um diretório que não seja acessível pela web para garantir o sigilo dos dados do seu arquivo htpasswd. Coloque-o num diretório acima do diretório raiz. Este arquivo, assim como o htaccess, também precisa um upload em modo ASCII (e não em BINARY).

Configurando o arquivo htaccess

Se você ainda não criou seu arquivo .htaccess, faça-o agora. Inclua o seguinte código:

AuthUserFile /usr/local/seu/diretorioSeguro/.htpasswd
AuthGroupFile /dev/null
AuthName AreaProibida
AuthType Basic
require user numaboa

A primeira linha corresponde ao caminho completo do servidor para o seu arquivo htpasswd. Note que não se trata de uma URL e sim de um caminho de servidor. Verifique qual é o caminho correto servidor do seu site (eu costumo usar a função phpinfo() do PHP). Saiba também que, se você colocar o arquivo htaccess no diretório raiz, todo o site ficará protegido por senha - o que, provavelmente, não é a sua intenção.

Você pode usar qualquer nome para o seu arquivo de senhas, como senhas.txt ou qualquer outra coisa. Basta referenciá-lo corretamente. Além disso, se por acaso o caminho contiver nomes de diretórios com espaços, então será preciso colocar o caminho entre aspas - por exemplo “/usr/local/diretorio seguro/senhas.txt”.

AuthName é o nome da área protegida. Também pode ser qualquer nome que você desejar, mas evite caracteres especiais como $, %, ç ou ã.

AuthType é o tipo de autenticação. Neste caso foi escolhida a Basic porque se trata de uma autenticação porque estaremos usando a autenticação HTTP básica.

Com require user numaboa estamos indicando que apenas o usuário numaboa poderá ter acesso a esta área. Se quisermos aumentar a lista de usuários permitidos, devemos substituir require use numaboa por require valid-user. Neste caso, todos os usuários que estiverem no arquivo de senhas poderão acessar a área protegida.

Se quisermos que apenas os usuários explicitamente mencionados ou seja, apenas alguns da lista de senhas, possam acessar a área protegida, o bloco de código precisa ser:

AuthUserFile /usr/local/seu/diretorioSeguro/.htpasswd
AuthGroupFile /dev/null
AuthName AreaProibida
AuthType Basic

require user numaboa
require user sobmedida

Autor/fonte: Vovó Vicki