Tutoriais
Tutoriais HostMídia

Como proteger um diretório com senha usando o .htaccess

Introdução

Quando se cria um site, normalmente se tem o desejo que todos ou muitos o acessem e quanto mais conteúdo acessado e consumido, melhor. Mas nem sempre essa é uma verdade absoluta.

Um site na Internet, serve não apenas para disponibilizar conteúdo indiscriminadamente a todos o tempo todo. Ele pode ser um meio prático de se fornecer conteúdo restrito também, para apenas algumas pessoas que você precisar ou desejar, da mesma forma que você faz com o restante do seu site.

Assim, você pode ter um diretório que contém relatórios, planilhas e outros documentos que devem ser acessados apenas por alguns colaboradores ou uma área específica da empresa, por exemplo. Pode querer ter uma área com tabelas de preços, catálogos ou material de vendas para acesso apenas por parte dos seus representantes comerciais. Enfim, há uma série de possibilidades as quais o site da empresa pode servir de ferramenta, mas com acesso restrito.

Quando se usa um CMS ou algum outro sistema de administração de sites, é razoavelmente simples criar diretórios ou áreas do site com acesso restrito, ou seja, cujo acesso só é possível mediante fornecimento de um usuário e senha. Mas e quando você já tem um site simples em HTML ou mesmo PHP e ele não lhe oferece tal funcionalidade?

Felizmente boa parte das empresas de hospedagem, utiliza servidores web baseados no Apache, que é um serviço de exibição de páginas web, bastante popular e que conta com alguns recursos e entre eles, é possível proteger os diretórios que se queira ou precise, usando senhas.

Além disso, o Apache tem embutido um sistema de criptografia bcrypt, baseado no MD5, mas que foi modificado para uso no servidor web.

Para conseguirmos o que queremos, vamos nos basear em dois arquivos utilizados pelo Apache, que são o .htpasswd e o .htaccess. O primeiro (.htpasswd), será o arquivo no qual armazenaremos os usuários que desejamos que tenham acesso e suas respectivas senhas. Já o segundo (.htaccess), é uma abreviatura de Hypertext Access e consiste de um arquivo de configuração, usado para estabelecer o comportamento do Apache para a pasta e subpastas na qual ele está localizado.

Os arquivos .htpasswd e .htaccess não são convencionais, na medida em que não têm extensões, como usuários Windows estão acostumados e porque eles começam com um ponto. Isto implica também que em alguns programas FTP eles ficam ocultos e que você precisa de manipulá-los de modo diferente no seu computador baseado no Windows.

Mesmo com essas particularidades, o procedimento é bastante simples e ao alcance de qualquer um, desde que observados alguns simples aspectos.

Pré-requisitos para proteger um diretório com senha

Embora seja um procedimento simples e que deve ser possível a qualquer usuário, algumas condições precisam ser observadas:

  • Acesso à Internet. Apesar do processo envolver FTP e transferência de arquivos, como geralmente eles são de pequeno tamanho, não há exigência de conexões de alta velocidade;

  • Um cliente de FTP, o qual dada a sua popularidade e facilidade de uso, recomendamos que seja o Filezilla;

  • Editor de texto simples e que não utilize caracteres de controle. O Notepad do Windows e que é padrão em todas as versões do sistema operacional, atende as exigências;

  • Um site que gera senhas criptografadas que sejam lidas pelo Apache. Há muitos serviços gratuitos desse tipo, sendo um deles o Web2.0Generators;

  • Dados de acesso ao FTP da conta de hospedagem;

Passos para proteger um diretório com senha

Há uma certa liberdade na adoção dos passos necessários à realização do procedimento, no entanto, acreditamos que os passos a seguir representam o roteiro mais simples e lógico a ser adotado e assim que se compreenda o procedimento como um todo, pequenas variações são admissíveis e levarão ao mesmo resultado final:

  1. Sabendo-se o nome do diretório que será protegido e que em nosso exemplo, será “teste”, bem como o nome de usuário que terá acesso (fulano), abra o Notepad e copie e cole o texto a seguir:

  • AuthType Basic
    AuthName "Acesso restrito!"
    AuthUserFile /home/seu_usuario_de_hospedagem/.htpasswd
    Require user fulano

  1. Note que o usuário “fulano” será o único que tem acesso à pasta e subpastas em que o .htaccess estiver localizado. Se houver necessidade de outro usuário, ele deverá aparecer listado após “fulano”, separado apenas por um espaço em branco;

  2. Salve o arquivo nomeando-o como “.htaccess” (sem aspas) no campo nome e no tipo de documento, selecionando “Todos os arquivos (*.*)”, para que o Notepad não adicione automaticamente a extensão .txt ao nome utilizado;

  3. Acesse o site Web2.0Generators ou outro que julgar conveniente para gerar as senhas criptografadas e insira o nome do usuário (ex: fulano) e a senha e clique no botão para gerar a senha e que deve produzir um resultado semelhante a este: fulano:$apr1$3f9potdy$zADPowIvav5miV.dew4bd/;

  4. Anote a senha não criptografada para que possa ser fornecida ao usuário. Copie a string gerada pelo site de criptografia de senha e abra outro arquivo em branco no Notepad e cole a string. Vale observar que se você tiver mais diretórios protegidos ou mais usuários que podem ter acesso, cada linha deverá corresponder a um usuário e sua respectiva senha. Se já existe um .htpasswd que habilita outros usuários, cole os dados do novo usuário ao final do arquivo, em uma nova linha;

  5. Salve o arquivo colocando “.htpasswd” (sem aspas) no campo nome e no tipo de documento, selecionando “Todos os arquivos (*.*)”, para que o Notepad não adicione automaticamente a extensão .txt ao nome;

  6. Abra o Filezilla e conecte-se a sua conta de hospedagem, usando os dados de FTP que constam do e-mail de configurações que recebeu por ocasião da ativação da sua conta;

  7. Na janela dividida do Filezilla a esquerda, você tem a estrutura de pastas do seu computador e a direita, o servidor. Você deve localizar a pasta em que salvou .htpasswd e .htaccess no seu computador e a pasta raiz da sua conta, que é o nível acima da public_html. Selecione apenas o arquivo .htpasswd, arraste-o e solte na raiz da conta;

  8. Navegue na janela a direita até a pasta / diretório em que deseja aplicar a proteção com senha. Selecione apenas o arquivo .htaccess, arraste-o e solte na pasta que será protegida;

  9. Abra o seu navegador e digite o endereço que acabou de proteger (ex: http://www.seudominio.com.br/teste). Se você efetuou corretamente os passos acima, uma janela de autenticação deverá ser exibida, bastando fornecer o usuário e senha que você atribuiu anteriormente.

Assim, o procedimento acima consiste de inserir um arquivo em que todos os usuários e senhas autorizados estão listados e em cada pasta ou diretório que se deseja aplicar proteção, incluir um arquivo .htaccess em que os usuários autorizados estão listados.

Conclusão

Embora geralmente se crie um site e respectivo conteúdo para acesso e consumo indiscriminado, podem haver situações em que se queira ter áreas do site ou diretórios da sua estrutura do site, que tenham acesso restrito e protegido por senha. O Apache – servidor web – fornece uma funcionalidade pela qual é razoavelmente simples proteger diretórios por meio da criação dos arquivos .htpasswd e .htaccess.