Sven Rautenberg: .htaccess / was bedeutet diese Zeile

Beitrag lesen

Moin!

Order deny,allow

Deny from .aol.com
Deny from 192.168
Allow from 192.168.220.102


>   
> Bedeutet: Als erstes werden die Deny-Direktiven berücksichtigt, dann die Allow.  
> Allen Clients, deren Hostname im DNS auf .aol.com endet, sowie alle Clients, deren IP-Adresse mit 192.168 beginnt, werden ausgeschlossen; ausgenommen der Client mit der IP-Adresse 192.168.220.102, von dem aus Zugriffe erlaubt werden.  
  
Das ist so nicht vollständig erklärt.  
  
Das LETZTE Keyword im Order-Statement definiert, welche Standard-Einstellung grundsätzlich gilt. Hier ist es "allow", also ist der Zugriff grundsätzlich möglich.  
  
Der Zugriff wird verboten, wenn eine der als Deny aufgeführten Bedingungen zutrifft, also hier "Hostname endet auf .aol.com" und "IP beginnt mit 192.168".  
  
Diese Verbotsbedingung tritt aber nur dann in Kraft, wenn nicht noch eine Allow-Bedingung explizit aufgeführt ist - hier für die IP 192.168.220.102.  
  
Mit diesem dreistufigen Schema kann man also erstens für die Allgemeinheit eine Standardvorgabe machen, diese dann einschränken, und die Einschränkung dann teilweise wieder rückgängig machen. Im Falle von "Order deny,allow" ist der Standard "allow", einzelne Zugriffe werden mit Deny geblockt, und zu großes Deny kann mit Ausnahmen via Allow nochmal feiner definiert werden.  
  
Umgekehrt hätte "Order allow,deny" zur Folge, dass grundsätzlich erstmal geblockt wird, einzelne Bereiche dann mit Allow Zugriff erhalten, und dieser Zugriff nochmal mit Deny eingeschränkt werden kann.  
  
Es gibt "Allow from all" bzw. "Deny from all" - das zu benutzen ist aber nicht unbedingt die allerbeste Idee, weil diese Standardeinstellung für "alles" ja bereits durch passendes "Order" bestimmt werden kann. Insgesamt muss man sich sowieso seine Gedanken machen, ob die gewählte Definition das erreicht, was man will.  
  
Typische Verwendung für "from all" wäre:  
~~~apache
Order deny,allow  
Deny from all  
Allow from .intranet.example

Genau dasselbe erhält man mit:

Order allow,deny  
Allow from .intranet.example

Im zweiten Beispiel kann man allerdings noch explizit Hosts ausnehmen, die doch keinen Zugriff haben sollen:

Order allow,deny  
Allow from .intranet.example  
Deny from gateway.intranet.example

- Sven Rautenberg