Protegendo suas páginas com htaccess do Apache

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 os subdiretó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 AccessFileName do Apache (necessário permissão para isso).

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 de 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, podem-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: Dicas-L.

 


Associação SoftwareLivre

A Associação SoftwareLivre.org (ASL) é uma associação civil sem fins-lucrativos, com sede em Porto Alegre/RS que reúne empresários, profissionais liberais, estudantes e servidores públicos, estabelecendo relações com os mais diversos setores da sociedade como o poder público, universidades, empresas, grupos de usuários, hackers e ONGs. A ASL tem por principal objetivo tornar o software livre amplamente incluído na sociedade, propiciando espaço de discussão, apoio, fomento e organização de iniciativas nas mais diversas áreas relacionadas. - Site oficial da associação