Pra quem já desenvolve há algum tempo soluções online - sejam meros sites ou sistemas complexos -, sabe que uma das grandes ferramentas para proteção de conteúdo é o arquivo .htaccess.
Presente em 100% dos servidores da linha IX, ele não serve apenas para isso, como a maioria pensa. Tem muitas outras utilidades. Neste artigo vou abordar algumas, pra deixar claro o que alguns não entendiam, e apresentar o que outros não conheciam.
Antes de mais nada, é bom dar uma visitada na documentação online do .htaccess. É um excelente guia de referência para quem deseja utilizar a segurança que ele proporciona em várias das tarefas que pode realizar:
http://httpd.apache.org/docs/1.3/howto/htaccess.html
Um dos usos mais comuns para o .htacces é a já famosa proteção de diretórios. Quando se quer tornar uma asta particular, você tem algumas simples linhas que podem bloquear o acesso à pasta e torná-la acessível apenas para quem tenha um nome de usuário e senha.
Dentro dos servidores, estes usuários e senhas podem ficar armazenados em arquivos de senha chamados .htpasswd. Neste artigo vou tratar esta forma, que é a mais usual.
Muitos desenvolvedores, usam ferramentas de geração de arquivos .htaccess, porém na hora de criar um arquivo na mão, pra alguma outra utilidade, não conseguem. Isso se deve ao fato de não conhecerem a verdadeira utilidade de cada um dos seus parâmetros, ou pelo menos, dos mais importantes.
Como é o arquivo de senhas do .htaccess?
PHP
revistaphp:#78$1lX899e5fDPH1jPk
flavia:62V4UJ/K/c/Wc$3879gsrr9*
fulanodetal:81x8xIBUZnuLw438785/45s
Veja que o usuário é o primeiro item, separado por dois pontos e logo depois a senha criptografada. Este é mais um dos motivos pelos quais o .htaccess é seguro. Sua criptografia é muito potente. Sendo assim, você pode separar os usuários com suas senhas, em um arquivo especial, afim de melhor organizá-los. E se você ainda tem dúvida, sim, o arquivo não tem nome, apenas extensão (.htpasswd).
E como é um arquivo de proteção de pasta, comum?
PHP
AuthUserFile /usr/local/do/servidor/diretorioquevouproteger/.htpasswd
AuthGroupFile /dev/null
AuthName AreaRestritadoSite
AuthType Basic
<Limit GET>
require user revistaphp
require user flavia
</Limit>
Note que eu estou chamando um arquivo padrão de senhas. E dentro dele, quero apenas os usuários "revistaphp" e "flavia", pois informei ao .htaccess que apenas estes dois usuários tem direito de acesso à pasta protegida.
O resultado deste script será a famosa janelinha solicitando a autenticação.
Para a geração do arquivo de senhas, existem muitos sites que fornecem serviços de geração, como por exemplo o
http://home.flash.net/cgi-bin/pw.pl . Note que você digita o usuário e senha, e ele já gera pra você. Isso é bastante útil caso você esteja criando um arquivo .htpasswd na mão, pois a senha precisa estar criptografada para que o arquivo seja corretamente compreendido. Porém com os arquivos .htaccess, recomendo que você se familiarize e aprenda a trabalhar com eles o mais manualmente possível. ;)
Ainda na parte de segurança, você já deve ter se deparado com sites sem conteúdo e que permitem a listagem de pastas e diretórios para qualquer um navegar. Isso é uma grave falha de segurança, que deve ser evitada. Já foi-se o tempo em que colocar uma paginazinha index.qualquercoisa resolvia o problema. Hoje em dia, use sempre .htacess pra evitar a listagem, pois isso evita que um usuário mal intencionado saiba realmente o que tem nos seus diretórios. E além disso, a menos que você seja completamente louco de criar um index pra cada pasta do seu servidor, você será inteligente o bastante pra perceber a vantagem de um único arquivo fazer isso por você.
PHP
Options Indexes
order deny,allow
Viu como não doeu? Isso está impedindo a listagem de diretórios geral. Obviamente você pode colocar mais funções aí, como por exemplo:
Liberar apenas o Ip tal:
PHP
Allow from 200\.200\.200.200
Liberar apenas o ip tal e mais um dominio:
PHP
Allow from revistaphp.com.br
Allow from flaviajobs.com.br
Liberar apenas para usuários autenticados como já vimos acima, etc!
Na segunda parte deste artigo, vou mostrar mais grandes funções do .htaccess!
Aguardem!