|
||
|
|
» Início » Desenvolvimento » Aprendendo a utilizar o htaccess
|
|
Avaliação:
![]() ![]() ![]() ![]() | Publicado em: 03/11/2003Aprendendo a utilizar o htaccess
José de Menezes é formado em Ciência da Computação pela UFMG, empresário e ex-atleta profissional. Possui interesses em desenvolvimento web e webdesign.
1. Introdução Oi pessoal, neste tutorial vou tocar em alguns métodos dee segurança com os arquivos .htaccess do Apache, para proteger diretórios na Web, criar meios de login controlado, e outras utilidades deeste arquivo. O .htaccess é um arquivo especial para o Apache. Quando um usuário está navegando por alguma página do seu servidor Apache, para todo diretório que ele tentar acessar (e se o servidor estiver configurado para isso), o Apache procura pelo tal do .htaccess e se encontrar, verifica alguma restrição ou liberação para o usuário. Com isso podemos fazer duas coisas básicas em relação à segurança: Restringir acesso aos arquivos e diretórios do servidor Web através de um usuário e senha, ou então pelo IP/Hostname de quem está acessando. Trataremos dos dois assuntos aqui neste tutorial. 2. Configurando o Apache <Directory /> ou <Directory "/var/www/html"> Nesta configuração do Apache, tudo que está dentro das significa restrtições e opções especialmente configuradas para aquele diretório. No caso acima, eu estou aplicando algumas regras tanto no diretório base do servidor Web (ou seja, todo o servidor Web, independente do domínio virtual ou qualquer outra coisa), como também estou aplicando no diretório "/var/www/html", que aqui no caso é onde ficam as páginas Web. Então cabe a você decidir escolher entre as duas diretrizes (ou utilizar a configuração nova nas duas diretrizes mesmo, ou até então criar uma diretriz nova). Como eu quero ativar o .htaccess em todo o meu servidor Web, vou colocar da seguinte maneira: <Directory /> O que eu fiz aqui foi adicionar a opção "Indexes" neste diretório e colocar o valor "AuthConfig" no AllowOverride. Em "Options", eu digo algumas opções extras que podem ser colocadas neste diretório. Isso não tem muito haver com este tutorial e nem é necessário, mas é sempre bom saber alguma coisa a mais se já não se sabe :) Como a própria documentação do Apache diz, podemos usar as seguintes opções para diretórios: "None", "All", ou qualquer combinação de "Indexes", "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews". A opção "Indexes" faz com que quando não tiver nenhum arquivo do tipo index.html, index.htm, ou "páginas iniciais", o Apache cria uma página com a lista dos arquivos existentes no diretório. O "Includes" permite colocar arquivos do tipo SSI (Server Side Includes), que são páginas dinâmicas antigamente usadas por muitos (Agora a moda é PHP, Python, Perl, etc). O "FollowSymLinks" faz com que o Apache aceite links simbólicos no sistema, seguindo os diretórios ou arquivos que os links apontam. O "ExecCGI" faz com que neste diretório possam ser executados arquivos CGI (Common Gateway Interface). A opção ExecCGI pode ser (e geralmente é) encontrada para o diretório "/var/www/cgi-bin", onde estão localizados os scripts CGI. Já o "multiViews" serve para por exemplo, servir páginas de acordo com a preferência de língua do usuário (index.html.pt_BR, indeex.html.en, etc). O All significa todas as opções (menos o MultiViews) e o None significa nenhuma :) Deixando de lado essa parte, vamos ao que realmente interessa. A opção "AllowOverride AuthConfig" é a que diz para o Apache verificar pelos arquivos .htaccess nos diretórios e aplicar as regras contidas no arquivo nos diretórios e subdiretórios de onde o arquivo esteja localizado. Colocada esta opção, é só dar um restart ou reload no servidor Web e tudo funcionará. Para fins de entendimento, o nome "AllowOverride" já diz tudo: Ele sobrescreve as configurações padrões do servidor Apache para colocar novas configurações para aquele diretório. Estas configurações podem ser permissões dee acesso, opções (como as que mostrei acima), entre outros. 3. Utilizando o .htaccess 3.1. Restringindo o acesso por IP/Hostname # Deixa a Intranet acessar Esse exemplo de .htaccess fará com que o diretório, seus arquivos e seus subdiretórios só poderão ser acessados por quem estiver na faixa de IP de 192.168.0.1 até 192.168.0.254. Vamos supor agora que eu queira restringir apenas 1 IP, para não acessar um certo diretório. O .htaccess ficaria assim: # Deixa todo mundo acessar, menos o IP 192.168.0.25 E está feito, quando o IP 192.168.0.25 tentar acessar, não vai conseguir. Você pode substituir o IP por um hostname, contanto que a opção "HostnameLookups" no httpd.conf esteja habilitada (on). 3.2. Restringindo o acesso por usuário e senha $ mkdir /etc/httpd/auth $ htpasswd -c acesso hugo $ htpasswd acesso eitch $ htpasswd acesso sakura O resultado que temos é o arquivo /etc/httpd/auth/acesso com o seguinte conteúdo: hugo:zEerw0euqYD3k $ perl -e 'print crypt("minhasenha", "Lq"), " ";' E então é só incluir a senha no arquivo como no esquema acima. Como pode ver, as senhas estão criptografadas. Este armazenamento de senhas é muito simples. Há outros métodos de se armazenar senhas (arquivos de banco de dados por exemplo), mas por enquanto não vou cobrir isto no tutorial porque não é tão necessário. Mas fica extremamente necessário se houver muitos e muitos usuários e senhas, pois se houver muitos, o processo de autenticação pode demorar um pouco. Agora que o arquivo de usuários e senhas está criado, vamos criar o .htaccess que irá verificar este arquivo. Veja o exemplo do .htaccess: AuthName "Acesso Restrito à Usuários" Salve o arquivo e pronto, quando um usuário acessar a URL, o servidor irá verificar este arquivo .htaccess e irá perguntar pro cliente um usuário e senha. Epa, mas peraí, vamos explicar direitinho o arquivo acima! AuthName: O nome que aparece como mensagem de Login. Pode usar algo como "Entre com Login e Senha", ou coisa deste tipo. admin:hugo eitch Salve o arquivo e então criamos três grupos. Para usar estes grupos, teremos que modificar o arquivo .htaccess anterior para ficar desta maneira: AuthName "Acesso Restrito à Usuários" No arquivo acima eu adicionei a linha "AuthGroupFile", que indica pro servidor onde está o arquivo dos grupos (bem parecido com o "AuthUserFile" hein?) e no "require", coloquei que requer o grupo admin. Simples de entender, não? Agora já dá pra brincar bastante restringindo usuários :) 3.3. Opções diferentes Options +Indexes E para tirar essa opção: Options -Indexes E nisso você pode usar para qualquer uma das opções. 3.4. Mensagens de Erro personalizadas ErrorDocument 401 /erros/falhaautorizacao.html Caso você não saiba os códigos de erro do Apache, a configuração do apache 2.x já tem uma boa ajuda quanto a isto, vou colocar as linhas aqui como referência (entenda se quiser e puder :P): ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var 3.5. Opções para arquivos e diretórios específicos # Restringe o arquivo_secreto.html somente para o IP 192.168.0.30 # Restringe o diretório admin para utilizar senhas # Nega o acesso dos clientes ao .htaccess (bom colocar no httpd.conf) Entendeu bem como funciona o esquema? Então é só brincar bastante :) 4. Conclusão por Hugo Cisneiros, hugo_arroba_devin_ponto_com_ponto_br Vitor
que artigo ruim... essa mesma explicação está em toda web .. CTRLV
![]() ![]() ![]() ![]() ![]() a <a@a.com>
Horrorível
![]() ![]() ![]() ![]() ![]() anderson <quenada@quenada.com.br>
esse tutorial é o mesmo que esse http://www.devin.com.br/eitch/htaccess/
ta copiando é? ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
|