SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
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
APACHE – HTTP Server Project
                                                        Ficheiro .htaccess



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




                                                                                                                                          2
APACHE – HTTP Server Project
                                   Ficheiro .htaccess



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.




                                                                                     3
APACHE – HTTP Server Project
                                    Ficheiro .htaccess



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.




                                                                                         4
APACHE – HTTP Server Project
                                      Ficheiro .htaccess



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:


                                                                                             5
APACHE – HTTP Server Project
                                   Ficheiro .htaccess



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.




                                                                                       6
APACHE – HTTP Server Project
                                      Ficheiro .htaccess



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




                                                                                       7
APACHE – HTTP Server Project
                                      Ficheiro .htaccess



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




                                                                                             8
APACHE – HTTP Server Project
                                      Ficheiro .htaccess



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.




                                                                                           9
APACHE – HTTP Server Project
                                     Ficheiro .htaccess



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




                                                                                         10
APACHE – HTTP Server Project
                                       Ficheiro .htaccess



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.




                                                                                      11
APACHE – HTTP Server Project
                                       Ficheiro .htaccess



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




                                                                                       12
APACHE – HTTP Server Project
                                    Ficheiro .htaccess



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.




                                                                                      13

Más contenido relacionado

La actualidad más candente

Segurança em Home Page
Segurança em Home PageSegurança em Home Page
Segurança em Home Pageelliando dias
 
Tutorial instalacao-glpi-ocs
Tutorial instalacao-glpi-ocsTutorial instalacao-glpi-ocs
Tutorial instalacao-glpi-ocsJoao Muela
 
Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)elliando dias
 
OWASP AppSec 2010 BRAZIL Information Extraction Art of Testing Network Periph...
OWASP AppSec 2010 BRAZIL Information Extraction Art of Testing Network Periph...OWASP AppSec 2010 BRAZIL Information Extraction Art of Testing Network Periph...
OWASP AppSec 2010 BRAZIL Information Extraction Art of Testing Network Periph...Mauro Risonho de Paula Assumpcao
 
Ferramentas para Automação de Datacenter - GTER 37
Ferramentas para Automação de Datacenter - GTER 37Ferramentas para Automação de Datacenter - GTER 37
Ferramentas para Automação de Datacenter - GTER 37Wilson Lopes
 
Gerenciamento de endereços ip com php ipam
Gerenciamento de endereços ip com php ipamGerenciamento de endereços ip com php ipam
Gerenciamento de endereços ip com php ipamPietro Scherer
 
Atividade sistemaso redes1-13122012
Atividade sistemaso redes1-13122012Atividade sistemaso redes1-13122012
Atividade sistemaso redes1-13122012Carlos Melo
 
Aula14 vsftp de-introopenldap
Aula14 vsftp de-introopenldapAula14 vsftp de-introopenldap
Aula14 vsftp de-introopenldapRoberto Castro
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxThiago Paes
 
Aula 7_8-Upload e contador de acessos com PHP
Aula 7_8-Upload e contador de acessos com PHPAula 7_8-Upload e contador de acessos com PHP
Aula 7_8-Upload e contador de acessos com PHPLucas Augusto Fagundes
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Felipe Blini
 
Atec cursowebdesign aula02
Atec cursowebdesign aula02Atec cursowebdesign aula02
Atec cursowebdesign aula02Wcre8tive
 
Módulo 16 Instalação do DSpace 3.x Windows Linux
Módulo 16 Instalação do DSpace 3.x Windows LinuxMódulo 16 Instalação do DSpace 3.x Windows Linux
Módulo 16 Instalação do DSpace 3.x Windows LinuxRodrigo Prado
 

La actualidad más candente (19)

Squid proxy
Squid proxySquid proxy
Squid proxy
 
Segurança em Home Page
Segurança em Home PageSegurança em Home Page
Segurança em Home Page
 
Tutorial instalacao-glpi-ocs
Tutorial instalacao-glpi-ocsTutorial instalacao-glpi-ocs
Tutorial instalacao-glpi-ocs
 
Linux - Servidor Web Apache
Linux - Servidor Web ApacheLinux - Servidor Web Apache
Linux - Servidor Web Apache
 
Curso de proxy
Curso de proxyCurso de proxy
Curso de proxy
 
Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)Hyper Text Transfer Protocol (HTTP)
Hyper Text Transfer Protocol (HTTP)
 
OWASP AppSec 2010 BRAZIL Information Extraction Art of Testing Network Periph...
OWASP AppSec 2010 BRAZIL Information Extraction Art of Testing Network Periph...OWASP AppSec 2010 BRAZIL Information Extraction Art of Testing Network Periph...
OWASP AppSec 2010 BRAZIL Information Extraction Art of Testing Network Periph...
 
SSL no apache
SSL no apacheSSL no apache
SSL no apache
 
Ferramentas para Automação de Datacenter - GTER 37
Ferramentas para Automação de Datacenter - GTER 37Ferramentas para Automação de Datacenter - GTER 37
Ferramentas para Automação de Datacenter - GTER 37
 
Gerenciamento de endereços ip com php ipam
Gerenciamento de endereços ip com php ipamGerenciamento de endereços ip com php ipam
Gerenciamento de endereços ip com php ipam
 
Atividade sistemaso redes1-13122012
Atividade sistemaso redes1-13122012Atividade sistemaso redes1-13122012
Atividade sistemaso redes1-13122012
 
Aula14 vsftp de-introopenldap
Aula14 vsftp de-introopenldapAula14 vsftp de-introopenldap
Aula14 vsftp de-introopenldap
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - Nginx
 
Aula 7_8-Upload e contador de acessos com PHP
Aula 7_8-Upload e contador de acessos com PHPAula 7_8-Upload e contador de acessos com PHP
Aula 7_8-Upload e contador de acessos com PHP
 
Rest workshop
Rest workshopRest workshop
Rest workshop
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
 
Atec cursowebdesign aula02
Atec cursowebdesign aula02Atec cursowebdesign aula02
Atec cursowebdesign aula02
 
Apache proxy
Apache proxyApache proxy
Apache proxy
 
Módulo 16 Instalação do DSpace 3.x Windows Linux
Módulo 16 Instalação do DSpace 3.x Windows LinuxMódulo 16 Instalação do DSpace 3.x Windows Linux
Módulo 16 Instalação do DSpace 3.x Windows Linux
 

Destacado

Relatorio andrest
Relatorio andrestRelatorio andrest
Relatorio andrestVasco Silva
 
Andrest - Android POS *on the cloud
Andrest - Android POS *on the cloudAndrest - Android POS *on the cloud
Andrest - Android POS *on the cloudVasco Silva
 
Migração e transformação da infraestrutura tecnológica da IGAC
Migração e transformação da infraestrutura  tecnológica da IGACMigração e transformação da infraestrutura  tecnológica da IGAC
Migração e transformação da infraestrutura tecnológica da IGACVasco Silva
 
Media kit - Arquibancada Tricolor
Media kit - Arquibancada TricolorMedia kit - Arquibancada Tricolor
Media kit - Arquibancada TricolorRicardo Senna
 
Lync 2010 na Nuvem
Lync 2010 na NuvemLync 2010 na Nuvem
Lync 2010 na Nuvembrunoestrozi
 
Comunicado de imprensa: novo site da linkare
Comunicado de imprensa: novo site da linkareComunicado de imprensa: novo site da linkare
Comunicado de imprensa: novo site da linkareLinkare TI
 
Automatizando processos de negócios com Microsoft InfoPath, Business Connecti...
Automatizando processos de negócios com Microsoft InfoPath, Business Connecti...Automatizando processos de negócios com Microsoft InfoPath, Business Connecti...
Automatizando processos de negócios com Microsoft InfoPath, Business Connecti...Jorge Tressino Rua
 
Office 365 - Sales Presentation
Office 365 - Sales PresentationOffice 365 - Sales Presentation
Office 365 - Sales PresentationRicardo Senna
 

Destacado (9)

Cenários de Competitividade
Cenários de CompetitividadeCenários de Competitividade
Cenários de Competitividade
 
Relatorio andrest
Relatorio andrestRelatorio andrest
Relatorio andrest
 
Andrest - Android POS *on the cloud
Andrest - Android POS *on the cloudAndrest - Android POS *on the cloud
Andrest - Android POS *on the cloud
 
Migração e transformação da infraestrutura tecnológica da IGAC
Migração e transformação da infraestrutura  tecnológica da IGACMigração e transformação da infraestrutura  tecnológica da IGAC
Migração e transformação da infraestrutura tecnológica da IGAC
 
Media kit - Arquibancada Tricolor
Media kit - Arquibancada TricolorMedia kit - Arquibancada Tricolor
Media kit - Arquibancada Tricolor
 
Lync 2010 na Nuvem
Lync 2010 na NuvemLync 2010 na Nuvem
Lync 2010 na Nuvem
 
Comunicado de imprensa: novo site da linkare
Comunicado de imprensa: novo site da linkareComunicado de imprensa: novo site da linkare
Comunicado de imprensa: novo site da linkare
 
Automatizando processos de negócios com Microsoft InfoPath, Business Connecti...
Automatizando processos de negócios com Microsoft InfoPath, Business Connecti...Automatizando processos de negócios com Microsoft InfoPath, Business Connecti...
Automatizando processos de negócios com Microsoft InfoPath, Business Connecti...
 
Office 365 - Sales Presentation
Office 365 - Sales PresentationOffice 365 - Sales Presentation
Office 365 - Sales Presentation
 

Similar a Apache .htaccess

Redes servidor web
Redes servidor webRedes servidor web
Redes servidor webMauro Duarte
 
Projeto jorge,jefff, matheus
Projeto   jorge,jefff, matheusProjeto   jorge,jefff, matheus
Projeto jorge,jefff, matheusEadanalise
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxThiago Paes
 
Slides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas DistribuídosSlides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas Distribuídosvinycesar
 
Apresentação zend framework 2 parte 1
Apresentação zend framework 2   parte 1 Apresentação zend framework 2   parte 1
Apresentação zend framework 2 parte 1 Edgar Dantas
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebIsrael Messias
 
Criando Sites Com CMS
Criando Sites Com CMSCriando Sites Com CMS
Criando Sites Com CMSClaudio Toldo
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend frameworkMarcos Oliveira
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugarUtilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugarmeetupwordpressfln
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 

Similar a Apache .htaccess (20)

Redes servidor web
Redes servidor webRedes servidor web
Redes servidor web
 
06 - Servidor Apache
06 - Servidor Apache06 - Servidor Apache
06 - Servidor Apache
 
Python CGI
Python CGIPython CGI
Python CGI
 
Projeto jorge,jefff, matheus
Projeto   jorge,jefff, matheusProjeto   jorge,jefff, matheus
Projeto jorge,jefff, matheus
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
 
Tema 1 | Introdução a PHP
Tema 1 | Introdução a PHPTema 1 | Introdução a PHP
Tema 1 | Introdução a PHP
 
Slides nginx
Slides nginxSlides nginx
Slides nginx
 
Slides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas DistribuídosSlides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas Distribuídos
 
Apresentação zend framework 2 parte 1
Apresentação zend framework 2   parte 1 Apresentação zend framework 2   parte 1
Apresentação zend framework 2 parte 1
 
Programação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente WebProgramação Multiplataforma em Ambiente Web
Programação Multiplataforma em Ambiente Web
 
Cake Php
Cake PhpCake Php
Cake Php
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
 
Vamos conversar sobre cache
Vamos conversar sobre cacheVamos conversar sobre cache
Vamos conversar sobre cache
 
Criando Sites Com CMS
Criando Sites Com CMSCriando Sites Com CMS
Criando Sites Com CMS
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend framework
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugarUtilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 
A Linguagem Php
A Linguagem PhpA Linguagem Php
A Linguagem Php
 

Apache .htaccess

  • 1. 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
  • 2. APACHE – HTTP Server Project Ficheiro .htaccess 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 2
  • 3. APACHE – HTTP Server Project Ficheiro .htaccess 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. 3
  • 4. APACHE – HTTP Server Project Ficheiro .htaccess 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. 4
  • 5. APACHE – HTTP Server Project Ficheiro .htaccess 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: 5
  • 6. APACHE – HTTP Server Project Ficheiro .htaccess 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. 6
  • 7. APACHE – HTTP Server Project Ficheiro .htaccess 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 7
  • 8. APACHE – HTTP Server Project Ficheiro .htaccess 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 8
  • 9. APACHE – HTTP Server Project Ficheiro .htaccess 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. 9
  • 10. APACHE – HTTP Server Project Ficheiro .htaccess 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 10
  • 11. APACHE – HTTP Server Project Ficheiro .htaccess 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. 11
  • 12. APACHE – HTTP Server Project Ficheiro .htaccess 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 12
  • 13. APACHE – HTTP Server Project Ficheiro .htaccess 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. 13