apache htaccess

13
Apache HTTP Server Project: Ficheiro .htaccess Quarta-feira, 07 de Abril de 2010 Trabalho elaborado por: Tiago Bem Nº8309 Vasco Silva Nº11782 Desenvolvimento de Aplicações WEB Mestrado em Engenharia Informática

Upload: vasco-silva

Post on 15-Jun-2015

634 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Apache htaccess

Apache – HTTP Server Project:

Ficheiro .htaccess

Quarta-feira, 07 de Abril de 2010

Trabalho elaborado por:

Tiago Bem Nº8309

Vasco Silva Nº11782

Desenvolvimento de Aplicações WEB

Mestrado em Engenharia Informática

Page 2: Apache htaccess

APACHE – HTTP Server Project

Ficheiro .htaccess

2

CONTENTS

1 Introdução ............................................................................................................................. 3

2 O Ficheiro .htaccess – O que é? ............................................................................................ 4

3 Autenticação e autorização ................................................................................................... 5

4 Mensagens de erro................................................................................................................ 7

5 Definir a página a ser carregada por omissão ....................................................................... 8

6 Redireccionamento ............................................................................................................... 9

7 Bloquear o acesso por Endereço IP ..................................................................................... 10

8 Bloquear o acesso a ficheiros .............................................................................................. 11

9 Bloquear a listagem de ficheiros ......................................................................................... 12

10 Conclusão ............................................................................................................................ 13

Page 3: Apache htaccess

APACHE – HTTP Server Project

Ficheiro .htaccess

3

1 INTRODUÇÃO

Este trabalho enquadra-se no âmbito da disciplina de Desenvolvimento de Aplicações Web

coordenada pelo Prof. Doutor Carlos Costa.

O trabalho tem como objectivo a explanação do ficheiro .htaccess de forma a enumerar todas

as suas funcionalidades/potencialidades e expôr a sua configuração com exemplos práticos.

Page 4: Apache htaccess

APACHE – HTTP Server Project

Ficheiro .htaccess

4

2 O FICHEIRO .HTACCESS – O QUE É?

O ficheiro .htaccess é um ficheiro que permite definir um conjunto de parâmetros e

funcionalidades no site(directoria e sub-directorias) onde este está localizado.

Existem imensas utilidades na configuração deste ficheiro o que pode ser bastante útil para

quem desenvolve aplicações Web e que pretende necessita de alguma parametrização extra,

para além da definidade globalmente no Apache.

Todas as funcionalidades que este ficheiro disponibiliza, estão também disponíveis no ficheiro

global de configurações do apache. Qualquer configuração que esteja definida no .htaccess

prevalece sempre sobre o ficheiro global de configurações do apache. Na prática, o apache

carrega as configurações globais do apache, de seguida as do ficheiro .htaccess, fazendo um

overwrite em configurações que já tenham sido declaradas.

Este ficheiro é normalmente utilizado em serviços de alojamento, em que devido a questões

óbvias de segurança, os utilizadores não tem acesso ao ficheiro global de configurações do

apache, assim, através desta forma podem definir a configuração apenas no site em que tem

acesso. Ainda assim, é necessário que o ficheiro de configuração global do Apache permita que

a utilização dos ficheiros .htaccess, para isso isso é utilizado o parâmetro AllowOverride. A

possiblidade da execução deste ficheiro tem custos em termos de performance e segurança.

Em performance, pois o apache tem que fazer um carregamento de configurações extra por

cada .htaccess existente, e em segurança pois com este ficheiro é dificil manter uma base de

configurações homógenea em todo o servidor. Devido a estes aspectos, existem serviços de

alojamento que não permitem a execução destes ficheiros.

Nos casos em que podemos editar o ficheiro global de configurações do Apache, deve ser este

a ser utilizado, uma vez que também nos permite aplicar diferentes configurações a diferentes

sites através da directiva <directory> </directory>, e evitar desta forma o uso dos ficheiros

.htaccess. Desta forma ganhamos performance, segurança e facilidade de administração, visto

ficar a administração centralizada num único ficheiro.

Tal como já foi descrito acima, este ficheiro pode definir imensas funcionalidades. Foi feita

uma selecção das mais usadas nestes ficheiros. Nos pontos seguintes estas são apresentadas e

sucintamente explicadas acompanhadas com um exemplo prático. As funcionalidades

seleccionadas foram: autenticação e autorização, mensagens de erro, página por omissão,

redireccionamento, bloqueio de endereços IP, bloquio de acesso a ficheiros e bloqueio de

listagem de ficheiros.

Page 5: Apache htaccess

APACHE – HTTP Server Project

Ficheiro .htaccess

5

3 AUTENTICAÇÃO E AUTORIZAÇÃO

Hoje em dia existem inúmeras formas e mecanismos de autenticação para controlar os acessos

a áreas restritas de sites. Através do ficheiro .htaccess podemos também criar áreas restritas

em sites e gerir os respectivos acessos. As grandes vantagens comparando com outros

mecanismos, são:

Este ser corrido ao nível do apache, não havendo assim a possibilidade de haver um

buraco de segurança, e os conteúdos ficarem expostos;

Nos casos em que apenas são alojados ficheiros “soltos” (apenas para download, sem

qualquer página .html,.php,etc), não existe necessidade de criar um “mini site” apenas

para efectuar a autenticação;

A facilidade de implementação deste mecanismo – é feito apenas com algumas

entradas no ficheiro .htacces, em conjunto com um ficheiro .htpasswd.

A lista de utilizadores é guardada num ficheiro .htpasswd. O conteúdo do ficheiro é de uma

entrada para cada utilizador no formato <user>:<password>.

Exemplo prático:

É utilizado o comando htpasswd para fazer a administração dos utilizadores.

Para criar o ficheiro de passwords em /etc/.htpasswd com um utilizador – user1 é utilizado o

comando:

htpasswd -c /etc/.htpasswd user1

Este comando pede para inserir uma password(a password inserida foi:“user1”). É então

criado o ficheiro com o conteúdo:

user1:oKKfw4JJeeG4M

No ficheiro .htaccess é necessário associar o ficheiro .htpasswd a ser utilizado. É então criado o

ficheiro .htaccess com o conteúdo:

AuthUserFile /etc/.htpasswd

AuthType Basic

AuthName "Autenticacao teste atraves de .htaccess para a cadeira de

DAW"

Require valid-user

AuthUserFile: caminho para o ficheiro .htpasswd;

AuthType: Tipo de autenticação a ser utilizada;

AuthName: Mensagem a ser apresentada na janela de autenticação;

Require valid-user: Qualquer utilizador no ficheiro .htpasswd poderá aceder ao site.

Para adicionar utilizadores ao ficheiro .htpasswd é usado o comando:

Page 6: Apache htaccess

APACHE – HTTP Server Project

Ficheiro .htaccess

6

root@desktop:/var/www/daw# htpasswd -mb /etc/.htpasswd tiago tiagopwd

root@desktop:/var/www/daw# htpasswd -mb /etc/.htpasswd vasco vascopwd

O conteúdo do ficheiro /etc/.htpasswd após a execução desttes comandos será:

user1:oKKfw4JJeeG4M

tiago:$apr1$c3/xcxJn$NysAo.KY8A/PZtgPvAcE00

vasco:$apr1$d3MaKNij$N48z8SnReNhBojfCwdLNa.

Com a existência de vários utilizadores no ficheiro .htpasswd, podemos configurar para que

apenas alguns possam efectuar login, ao invés do exemplo anterior em que todos poderiam

efectuar. No exemplo abaixo, apenas os utilizadores vasco e tiago poderão efectuar login.

AuthUserFile /etc/.htpasswd

AuthType Basic

AuthName "Autenticacao teste atraves de .htaccess para a cadeira de

DAW"

Require user vasco

Require user tiago

A autenticação através de um ficheiro .htpasswd é o mais utilizado com este mecanismo.

Existe também a possiblidade de ligar a lista de utilizadores a uma base de dados, ou aos

utilizadores do sistema, mas, torna-se mais complexo e nesse caso já é aconselhável utilizar

outros métodos.

Page 7: Apache htaccess

APACHE – HTTP Server Project

Ficheiro .htaccess

7

4 MENSAGENS DE ERRO

Através do .htaccess é possível configurar as páginas de erro do servidor apache.

Para isso é necessário que tenhamos uma noção dos erros possíveis quando tentamos aceder

a uma página e dos códigos que lhes estão associados.

Os códigos mais utilizados são o 404 e o 500. O 404 é usado para quando uma página não é

encontrada. O erro com o código 500 está associado a erros provenientes da execução de

script internos.

Também poderá ser útil a configuração da página com o erro 401 que é apresentada quando a

página precisa de autenticação para a sua visualização.

Existem mais dois erros que também poderão ser configurados, o erro com o código 400 e o

erro com o código 403. O erro 400 – Bad Request ocorre quando os clientes de alguma forma

tentam modificar o URL de acesso ou uso de scripts para tentar de alguma forma alterar o

comportamento normal da pagina. O erro 403 – Forbidden está associado ao facto de se

querer aceder a um ficheiro ou pasta do qual não tem permissões.

Para configurar as páginas de erro basta acrescentar ao ficheiro .htaccess algumas linhas de

código que de seguida serão mencionadas no exemplo prático. As mensagens que aparecem

não são mais do que um simples ficheiro HTML que pode ser configurado como pretender.

Exemplo prático:

Para configurar o erro com o código 400 basta inserir a seguinte linha dentro do ficheiro

.htaccess:

ErrorDocument 400 /errors/badrequest.html

Primeiro específica o tipo de erro que pretende e de seguida fornece o caminho para a página

de erro. Se quiser editar a forma como erro aparece basta editar o ficheiro .html

correspondente ao código do erro e depois escrever o html que desejar.

Para os outros tipos de erro as linhas a adicionar seriam:

ErrorDocument 401 /errors/authreqd.html

ErrorDocument 403 /errors/forbid.html

ErrorDocument 404 /errors/notfound.html

ErrorDocument 500 /errors/serverr.html

Page 8: Apache htaccess

APACHE – HTTP Server Project

Ficheiro .htaccess

8

5 DEFINIR A PÁGINA A SER CARREGADA POR OMISSÃO

Habitualmente, quando inserimos um endereço no browser, que é um caminho/directoria, e

não o destino final para o ficheiro, o servidor vai procurar por uma lista de ficheiros nessa

directoria, se encontrar algum, mostra esse ficheiro. Essa é a lista de ficheiros por omissão,

normalmente é constituída por os seguintes ficheiros : index.html, index.htm, default.html...

Nos casos em que queremos colocar uma página por omissão com um nome diferente do

acimo referido, por exemplo index.php, torna-se chato ser necessário criar um index.html que

reencaminhe para o index.php. Nestes casos, podemos alterar o ficheiro, ou a lista de ficheiros

a carregar por omissão.

O ficheiro .htaccess permite alterar a lista de ficheiros por omissão. Na execução, o servidor irá

procurar os ficheiros sequencialmente, o primeiro a ser encontrado na directoria, é o que é

apresentado.

Exemplo prático:

DirectoryIndex firstIndex.html secondIndex.html daw.html

Page 9: Apache htaccess

APACHE – HTTP Server Project

Ficheiro .htaccess

9

6 REDIRECCIONAMENTO

Existem muitas formas de redireccionar páginas, pode ser feito através de javascript , http-

equiv ou scripts no lado do servidor em PHP, Java, C# etc…

O .htaccess também possibilita o redireccionamento de páginas e em certos casos até pode ser

mais simpático conseguindo-o fazer de uma forma muito simples.

O que o .htaccess faz é usar o Redirect para verificar os pedidos a páginas ao servidor e se ele

encontrar a página pedida redirecciona para a que for configurada.

Exemplo prático:

Linha a adicionar ao .htaccess

Redirect /origem/origem.html http://site.com/destino/destino.html

Basicamente, este procedimento passa por adicionar o comando Redirect com o caminho da

página origem(que se pretende fazer o redireccionamento) e de seguida colocar caminho Web

para a página de destino.

Page 10: Apache htaccess

APACHE – HTTP Server Project

Ficheiro .htaccess

10

7 BLOQUEAR O ACESSO POR ENDEREÇO IP

O bloqueio de determinados endereços IP, é usado normalmente em duas situações, ou

porque queremos realmente bloquear um IP (suspeita de hacking, troca de demasiado

tráfego,endereço IP suspeito, etc...), ou então queremos apenas permitir uma lista de IP's

limitada. Basicamente, a forma de efectuar esta configuração é: “Acedem todos excepto

excepto estes” ou “Não acede ninguém excepto estes”. Abaixo, poderemos ver um exemplo de

cada.

A entrada order, indica a ordem com que as regras são corridas. Não interessa a ordem por

que elas aparecem no ficheiro mas sim a ordem definida na cláusula order. Se tivermos order

deny allow, as regras de allow são prioritárias sobra as deny (pois são corridas depois, ficando

estas a prevalecer), caso tenhamos order allow deny, prevalecem as regras deny. O modo de

funcionamento da entrada order é sempre este.

Exemplo prático:

A seguinte regra bloqueia o acesso a qualquer endereço IP excepto o da própria máquina - 127.0.0.1:

order deny,allow

deny from all

allow from 127.0.0.1

A seguinte regra bloqueia o acesso da própria máquina - 127.0.0.1:

order allow,deny

allow from all

deny from 127.0.0.1

Page 11: Apache htaccess

APACHE – HTTP Server Project

Ficheiro .htaccess

11

8 BLOQUEAR O ACESSO A FICHEIROS

Conseguir evitar que certos ficheiros possam ser visíveis através do browser é sem dúvida uma

funcionalidade muito útil. Se considerarmos que o ficheiro .htaccess por algum lapso estiver

com permissões 755 ou 777, será possível a quem o tentar aceder ver a sua configuração e

posteriormente o acesso a uma página por exemplo.

O mesmo pode acontecer com outros ficheiros críticos em que o webmaster tem interesse em

que ninguém lhes possa aceder.

Exemplo prático:

Linhas a adicionar ao .htaccess

<Files .htaccess>

order allow,deny

deny from all

</Files>

No exemplo acima, podemos ver como bloquear o acesso ao ficheiro .htaccess. O mesmo pode

ser feito com os outros ficheiros basta alterar o nome do ficheiro.

Page 12: Apache htaccess

APACHE – HTTP Server Project

Ficheiro .htaccess

12

9 BLOQUEAR A LISTAGEM DE FICHEIROS

A possiblidade de listar as directorias é uma importante funcionalidade de um web server.

Podemos querer permitir que se liste, ou não, os ficheiros consoante as situações. Por

exemplo, se tivermos uma directoria, onde guardamos uma lista de ficheiros a partilhar, será

interessante que seja possível listar todo o conteúdo dessa directoria. Numa outra situação em

que o que temos alojado é um site com toda a sua estrutura, não queremos expôr todo o site

por diversos motivos óbvios(segurança, cópia de conteúdos, etc...).

As configurações do apache vem actualmente com a opção de listagem desactivada. De

seguida é apresentado como podemos activar ou desactivar esta opção através do ficheiro

.htaccess.

Exemplo prático:

Activar a opção de listagem:

Options +indexes

Desactivar a opção de listagem:

Options -indexes

Se não pretendermos desactivar a listagem de todos os ficheiros, mas sim, apenas de alguns podemos indicar os que não queremos que sejam listados. No exemplo seguinte, todos os ficheiros de extensão jpg e o ficheiro teste.html deixão de ser listados:

IndexIgnore *.jpg teste.html

Page 13: Apache htaccess

APACHE – HTTP Server Project

Ficheiro .htaccess

13

10 CONCLUSÃO

Podemos concluir com este trabalho que o ficheiro .htaccess está integrado num interessante

mecanismo do Apache, que possiblita ao utilizador sem acessos de administração do apache,

mas com acesso de escrita ao seu site, fazer a configuração deste.

Este mecanismo exige alguma organização da parte de quem utiliza os ficheiros .htaccess, pois

se estes não foram utilizados devidamente podem criar alguma redudância e incoerências de

configuração.

É um ficheiro com grandes potencialidades, mas que deve ser definido com algum cuidado

para que não se torne um problema na configuração do web-server.