Pequena confusão com diretivas de controle de acesso no Apache

2

O controle de acesso ao meu servidor é definido assim:

Order allow,deny
Allow from 127.0.0.1

E isso funciona do jeito que eu quero. Primeiro, somente o acesso da máquina local é permitido e, em seguida, todo o resto é negado. Mas eu encontrei muitos exemplos que fariam algo assim:

Order deny,allow
Deny from all
Allow from 127.0.0.1

Isso faz mais sentido. Primeiro, todo o acesso é negado e, em seguida, apenas o acesso local é permitido.

Minha pergunta é, eles são equivalentes e fazem exatamente a mesma coisa? Do jeito que eu vejo, eles são, mas eu só quero ter certeza de que eles são exatamente iguais. Se não, como eles diferem e qual devo usar para permitir o acesso somente à minha máquina local?

    
por Ricardo Amaral 26.07.2011 / 19:03

2 respostas

5

Sim, eles são equivalentes no aspecto de ambos fornecendo o mesmo resultado, permitindo apenas o acesso a partir de 127.0.0.1. Deixe-me citar a parte relevante da documentação na diretiva Order .

Allow,Deny

First, all Allow directives are evaluated; at least one must match, or the request is rejected. Next, all Deny directives are evaluated. If any matches, the request is rejected. Last, any requests which do not match an Allow or a Deny directive are denied by default.

Deny,Allow

First, all Deny directives are evaluated; if any match, the request is denied unless it also matches an Allow directive. Any requests which do not match any Allow or Deny directives are permitted.

    
por 26.07.2011 / 19:29
0

Eu não acredito que eles sejam realmente os mesmos, porque no seu primeiro exemplo você não nega explicitamente nenhum host (não tem certeza do que o Apache usa como padrão se tiver alguma coisa).

O segundo exemplo mais regular que você mostrou está correto para permitir que apenas o host local acesse o servidor da web. Isso ocorre porque as diretivas de controle de acesso no Apache são aplicadas na ordem usada pela diretiva Order . Assim, com "negar, permitir", primeiro as diretivas de negação são aplicadas, então, quaisquer diretivas de permissão. Nesse caso, todos os hosts são bloqueados primeiro e, em seguida, 127.0.0.1 é permitido. Nada mais pode entrar exceto localhost. Se você fosse reverter apenas a ordem, fazendo com que "permitir, negar" significaria que primeiro 127.0.0.1 é permitido, então todos os hosts serão bloqueados. Isso significa que ninguém pode acessar o servidor da Web (nem mesmo o host local)!

Pense nisso como white / blacklisting. No caso 'negar, permitir' com Negar de todos , você está essencialmente criando uma lista de permissões dos usuários que deseja acessar o servidor, com cada Permitir de X você adiciona. Se você usou 'allow, deny' com Allow from All e adicionando Deny from X , você criou uma lista negra de pessoas que você especificamente não deseja acessar o servidor web.

    
por 26.07.2011 / 19:18