-2

Proteção de Diretórios Apache Usando .htaccess no Windows

criado por Tiago Seibel em 16/01/2006 6:32pm
Neste artigo, serão passados alguns passos básicos para proteger diretórios utilizando o recurso htaccess do Apache sob plataforma Windows NT/2000/XP. No Linux a configuração é similar, porém não entrarei em detalhes neste artigo.

1º Passo:

O primeiro passo é gerar um arquivo de senhas/passwords.

Para gerar este arquivo, é necessária a existência de um executável do Apache chamado htpasswd, que deverá estar dentro de ServerRoot/bin.

*ServerRoot é Diretório raiz do Apache, geralmente C:\Apache ou C:\Arquivos de Programas\Apache Group\Apache.

Usando o Prompt de Comando do MSDos, acesse a pasta bin do Apache, e execute o seguinte comando:

htpasswd -c arquivo_de_senhas username_para_acesso

Sintaxe:
-c = criar arquivo de senhas
arquivo_de_senhas = nome do arquivo de senhas a ser gerado
username_para_acesso = username adicionado ao arquivo.

Após execução desta linha, o aplicativo, solicitará uma senha para este usuário, e em seguida a confirmação, digite uma senha pessoal, não precisa ser a senha do windows.

Após estes passos foi gerado um arquivo contendo seu username/senha. Provavelmente na pasta corrente.

2º Passo:

Após realização da primeira etapa, será necessário, criar um arquivo denominado .htacess (com ponto na frente) dentro do diretório que será protegido,

Este arquivo deverá conter o seguinte texto:

AuthType Basic
AuthName "Mensagem do Painel de Login"
AuthUserFile C:/Apache/senhas/pw_portal
Require valid-user

Notas:
- Todos os diretórios protegidos deverão conter este arquivo.
- Todos os subdiretórios do diretório protegido pelo htaccess herdarão a proteção.

AuthUserFile, é o caminho do arquivo que criamos na primeira etapa.

3º Passo:

Abra o arquivo ServerRoot/conf/httpd.conf

Localize o texto:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

Comente a linha AllowOverride None e abaixo dela adicione a seguinte linha:

AllowOverride AuthConfig Limit FileInfo

Deixando-o assim:

<Directory />
    Options FollowSymLinks
    #AllowOverride None
    AllowOverride AuthConfig Limit FileInfo
</Directory>

Esta linha informará ao Apache a existência de Configurações de Autorização, ou seja, a existência de htaccesss. No momento do acesso o Apache verificará se o usuário possui ou não permissões para acessar tal diretório.

Após estas etapas serem seguidos, salve o arquivo httpd.conf, feche todas as janelas do Browser que estiverem acessando o Servidor, e Reinicie o servidor, ou de preferência pare o mesmo e inicie novamente.

Com os comandos:

net stop Apache
net start Apache

Acesse o diretório protegido, ao carregar, deverá aparecer um painel de login, caso contrario revise todos os passos acima, ou escreva-me

Um grande abraço a Todos!!!

Tiago Luis Cesa Seibel
Desenvolvedor de Sistemas
John Deere Brasil

Comentários:

Mostrando 1 - 10 de 11 comentários
Mailson Lira disse:
No caso de eu proteger um diretório completo vai proteger automaticamente os subdiretórios também, certo? Como eu faço para desproteger apenas um dos diretórios? Ou seja, não ativar esta proteção de senha em apenas um deles.
24/03/2006 9:57am (~18 anos atrás)

Thiago Z S disse:
O tutorial está bem montado e mostrando todo o conteudo do sistema... parabéns! Foi de grande utilidade! ^^
22/02/2006 6:21am (~18 anos atrás)

Tiago Seibel disse:
Nossa! Este artigo foi escrito em 2003, lembraram dele ... legal :) vou tentar ajudar!

Pessoal!!! Humildes desculpas por não estar acompanhando...

Respondendo ao Klaus....

- Sim, deverá apontar para o arquivo criado, constando neste, o caminho completo
-A diretiva AllowOverride, dirá o que o usuário poderá acessar, seguindo esta regra:

None - Nenhum acesso.
All - Permite todos os acessos.
AuthConfig - Permite configurações de autenticação.
FileInfo - Permite a inclusão de MIME para a árvore de diretórios. (o HTACCESS, por exemplo).
Limit - Permite o controle de acesso por diretório.
Options - Permite alterar as diretivas do Options (Outra diretiva)

Respondendo o gladiador...

O AuthUserFile é o arquivo que criastes, você deve por o caminho completo até ele ... E para proteger o "lontra" você deverá por o arquivo .htaccess dentro da pasta sem o .conf no final.

Realmente ele vai proteger toda a estrutura a partir do diretório onde está o htaccess.

frozengld, aquele campo vai a mensagem que você deseja exibir ao usuário na tela de login quanto a mensagem de erro, parece que seu arquivo de configurações está corrompido ... isso OS: Acontece quando ele é criado no linux e usado no Windows, por exemplo. Pois as quebras de linha são diferentes.
Robson , eu nunca testei o mod_rewrite... sorry!!!

Helton ... Estuda guri ...

Um Abraço!!!
16/02/2006 4:50pm (~18 anos atrás)

Nao funcionou de nenhum jeito aki!! nem do jeito do tiago e nem do jeito do gladiador!!
Alias oq q tem q por no"Acesso ao meu Diretório Restrito"?? o local onde ta a pasta q eu quero por senha?

Quando eu modifiquei do jeito do gladiador e tentei reiniciar o apache da isso aki...
"Erro no ficheiro do Apache:

"Sintax error on line 330 of c:/arquivos de programas/easyphp1-8/conf/httpd.conf:
AuthUserFile takes 1-2 arguments, text file containing user IDs and passwords"
13/02/2006 8:06am (~18 anos atrás)

Fala cara, Bom artigo. Mas vê se responde as perguntas dos que comentaram. Até mais.
02/02/2006 4:57am (~18 anos atrás)

maximus disse:
/* agora fiz como no linux e deu, porém protege todas as pastas :

basta editar o httpd.conf

///////////////////////////////
<Directory />
Options FollowSymLinks
#AllowOverride All
AllowOverride AuthConfig Limit FileInfo
AuthName "Acesso ao meu Diretório Restrito"
AuthType Basic
AuthUserFile /windows/SERV-N/apache/bin/senhas
require valid-user

Order allow,deny
</Directory>
////////////////////////////////////////

assim protege !!!
23/01/2006 4:10pm (~18 anos atrás)

maximus disse:
Há sim só acresecentando criei o .htaccess dentro do diretorio lontra salvei como .htaccess.conf certo ?
23/01/2006 3:30pm (~18 anos atrás)

maximus disse:
/* bom, até a criação de sem problemas entrei no /bin

htpasswd -c minhasenha jao

legal funfou criou o arquivo minhasenha

Tá bom agora quero proteger o arquivo lontra que está na pasta C:/windows/serv-n/apache/www/lontra

e ai

coloquei assim:

AuthType Basic
AuthName "Mensagem do Painel de Login"
AuthUserFile C:/windows/serv-n/apache/www/lontra
Require valid-user

e não funfou, o restante fiz tudo , e ai ? onde errei ?
23/01/2006 3:27pm (~18 anos atrás)

Cara, de primeiro momento não funcionou o esqueminha, mas tenho quase absoluta certeza que deixei passar algo em branco.
Em AuthUserFile, devo apontar para o arquivo criado em "
htpasswd -c arquivo_de_senhas username_para_acesso"?

Outra coisa, o seu "AllowOverride" está apontando "none" certo... o meu está "all"... qual a diferença?

Vlz!!!
23/01/2006 3:57am (~18 anos atrás)

Fiz o teste e funcionou como explicado.
20/01/2006 11:07am (~18 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)