O .htaccess
é um arquivo de configuração distribuído (já que pode ser usado em vários diretórios), sendo seu uso relacionado a webservers em geral, principalmente o Apache. Um arquivo, contendo uma ou mais diretivas de configuração, quando colocado dentro de um diretório, aplica essas diretivas a ele e a todos sub-diretórios, tendo essa nova configuração prioridade sobre a estabelecida para este diretório no httpd.conf.
Lembrando que você pode também mudar o nome do .htaccess
para .config,
por exemplo, através da diretiva
do Apache (necessário permissão para isso).
AccessFileName
Entre as várias utilidades desse arquivo de configuração (.htaccess
), vamos destacar algumas abaixo, com relação a segurança de páginas ou sites na internet:
AUTENTICAÇÃO
Digamos que você tenha criado um Administrador para seu site e este administrador esteja no endereço www.seudominio.com.br/admin
e, além disso, precise proteger seu Administrador de modo fácil, seguro e rápido. Isso poderia ser feito da seguinte maneira:
AuthType Basic AuthName “TITULO DA JANELA” AuthUserFile “/home/usuario/.htpasswds/public_html/admin/passwd” require valid-user
|
Na configuração acima, é estabelecido um tipo de autenticação no qual aparece uma janela solicitando usuário e senha para acessar determinada área (para trancar ou proteger a pasta admin , basta colocar o arquivo .htaccess
com as configurações acima na respectiva pasta). Na linha 2, pode-se colocar um nome ou título para a janela que irá aparecer para o usuário. Na linha 3, está o endereço do arquivo que contém os usuários e senhas dos quais têm acesso permitido à área. Esse arquivo (passwd) não pode ser acessado externamente (quando configurado corretamente) e o seu conteúdo é usuario:6YNFCJWSDGpA2 . Repare que a senha (que vem depois dos dois pontos e é usuario ) está encriptada para maior segurança.
INTRANET
Outra utilidade bastante interessante do .htaccess
é quando se tem uma Intranet rodando em um servidor web (que não seja interno a rede da empresa) e precisa-se permitir o acesso de determinados IPs (ou faixas de IPs) a essa Intranet. Pode-se, então, usar o seguinte código em um arquivo .htaccess
e colocá-lo no diretório onde está sua Intranet:
< Files pagina_erro_403.php> Order Deny,Allow Deny from all Allow from 192.168. |
</Files>
O código acima faz com que apenas os IPs da rede local, ou seja, os IPs do tipo 192.168.x.x , onde x representa um número de 0 a 255, seja permitido. Dessa forma, todos os outros IPs serão negados e nenhum IP fora da rede será aceito onde possuir o arquivo .htaccess
. Na primeira linha, é definida uma página que será exibida àqueles que não possuem permissão para acessar a área (nesse caso a página de erro 403, ou acesso negado, será exibida).
PÁGINAS DE ERROS
As páginas de erros que são exibidas, como quando não se acha um arquivo ou página no servidor e exibe uma página de Não Encontrado , podem ser personalizadas através do .htaccess
. Essas páginas são importantes e deve-se dar uma atenção especial a elas, já que uma tentativa de ataque ou uma intenção maliciosa podem ser descobertas através de uma monitoração constante de logs ou avisos, gerados com o auxílio de linguagens dinâmicas (PHP, Python, etc). O código abaixo mostra como se pode personalizar ou alterar essas páginas de acordo com suas necessidades ou interesses.
ErrorDocument 403 /acesso_negado.php
ErrorDocument 404 /nao_encontrado.php
ErrorDocument 500 /erro_interno_servidor.php
No código acima, foram personalizados os erros mais comuns (note que aos erros são associados números), e existem vários erros, como os erros de número 400, 401, 402 que são associados aos erros cliente , e os erros acima de 500 que são associados aos erros de servidor . Na primeira linha, é definida uma página para quando o usuário não tem permissão de acesso. Na segunda, quando um usuário tenta acessar um arquivo ou diretório inexistente no servidor, será exibida a página não_encontrado.php . E, por último, será exibido a página erro_interno_servidor.php quando acontecer um erro interno no servidor. Com esse recurso, você pode criar uma página PHP (por exemplo) que envia um e-mail e/ou armazena em algum banco de dados as informações do usuário que acessou tal página e, caso perceba algo suspeito, tomará providências de modo a corrigir uma suposta falha ou problema de segurança.
MOD_REWRITE
O mod_rewrite é um módulo do Apache que permite reescrever regras para tornar as URL s Amigáveis. Assim, pode-se atrair mais visitantes ao seu site (os endereços do seu site irão se tornar mais relevantes nos motores de busca) e ainda tornar seus sites mais seguros. Abaixo, iremos mostrar como:
RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ index.php?pagina=$1
|
A primeira linha é a responsável por ativar a regra que altera as URL s (endereços dos sites). A segunda e a terceira fazem com que essa regra não seja aplicada a outros arquivos e diretórios respectivamente. Na última linha, é exibida a regra de
reescrita onde qualquer string (.*) após a pasta, onde estiver o .htaccess
, será interpretado por index.php passado na variável pagina ; ou melhor, quando se digitar um endereço do tipo www.seusite.com.br/secao/subsecao/
, o Apache entenderá que você digitou www.seusite.com.br/index.php?pagina=secao/subsecao/
. Dessa maneira, você cria os links de seu site para o primeiro endereço citado, escondendo dessa forma a linguagem da página e as variáveis de include, evitando que usuários mal intencionados possam injetar códigos maliciosos (usando, por exemplo, o XSS).
As utilidades do arquivo .htaccess
são inúmeras e nesse tutorial foi priorizado o uso para tornar as páginas ou sites mais seguros. Obviamente, para tornar uma página segura, deve-se priorizar uma programação bem feita das páginas e uma configuração correta dos serviços e/ou protocolos do servidor, mas o uso do .htaccess
pode servir como uma ferramenta de ajuda e as vezes mais do que isso. É importante ressaltar que o uso de .htaccess
não deve sobrepor ao uso correto (configurações corretas) do arquivo principal httpd.conf
do Apache pelas razões aqui citadas de segurança , por razões de segurança e desempenho principalmente.
Fonte: Thiago Estrela é Graduando em Ciência da Computação pela Universidade Federal de Lavras (UFLA)
Relacionado
Sobre o blog
Este Blog tem o objetivo de divulgar as novidades da WebinHost e compartilhar notícias sobre hosting, servidores, empreendedorismo e todo universo tecnológico.