Proteger o acesso a uma página web do Apache com .htaccess
O ficheiro .htaccess permite modificar o comportamento do servidor web Apache de várias formas. Uma dessas formas é a definição de uma password que tem de ser digitada para poder aceder à página.Este método envolve a criação de dois ficheiros: .htpasswd (que vai conter a password) e .htaccess (que contém as instruções para o Apache pedir a password). É necessário também ter acesso à linha de comandos do servidor (acesso físico ou por SSH).
.htpasswd
Criamos o ficheiro .htpasswd com o seguinte conteúdo:myuser:X4r!23dFEm que "myuser" é o nome de utilizador e o "X4r!23dF" é a password. O ":" é o separador entre o username e a password.
O .htpassword, por uma questão de segurança, deve ser criado numa pasta não acessível a partir da web.
O ficheiro .htpasswd tem de ser encriptado para poder ser utilizado. A encriptação é feita usando o utilitário htpasswd. Portanto executamos:
htpasswd -c .htpasswd myuserO parâmetro -c indica que queremos criar um novo ficheiro encriptado. O "myuser" é o username que queremos usar. É nos pedida a password (duas vezes).
Se tentarmos ver o conteúdo do .htpasswd com:
cat .htpasswdVerificamos que o nome de utilizador continua visível, mas a password está encriptada.
.htaccess
Vamos agora criar o ficheiro .htaccess. Ao contrário do .htpasswd, este deve ser criado na pasta web que pretendemos proteger.O .htaccess deve ficar com este conteúdo:
AuthUserFile /caminho/completo/.htpasswdAuthType BasicAuthName "Documento protegido"Require valid-user
Erro comum
Se as diretivas no ficheiro .htacces aparentam não estar a funcionar, a causa mais provável é a existência da diretivaAllowOverride nonena configuração da pasta no Apache. Com esta opção o ficheiro .htaccess é completamente ignorado pelo Apache. Apenas é necessário editar a linha para
AllowOverride allpara permitir todas as diretivas no .htaccess, ou então
AllowOverride AuthConfigpara autorizar apenas as oções relativas à autrnticação.
Depois de alterar a configuração do Apache é necessário reiniciá-lo com
/etc/init.d/apache2 restartou com um comando equivalente.
Referências
http://www.elated.com/articles/password-protecting-your-pages-with-htaccess/
http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride