LocationMatch...ich checks nicht
Peter Mairhofer
- webserver
Hallo!
Grrrr, ich checks einfach nicht was hier der Fehler sein soll. Ich hätte gerne
/cgi-bin/awstats.pl --> deny
/cgi-bin/awstats.pl?config=site1 --> allow from a
/cgi-bin/awstats.pl?config=site2 --> allow from b
/cgi-bin/awstats.pl* --> deny
Aber bereits die erste Regel geht nicht:
<LocationMatch "/cgi-bin/awstats.pl$">
Order deny,allow
Deny from all
</LocationMatch>
Das dürfte doch nur auf awstats.pl matchen und NUR darauf! Weil ich ja mit dem "$" ende.
Wieso bekomme ich aber ein Deny sowohl für /cgi-bin/awstats.pl als auch für /cgi-bin/awstats.pl?config=site1 ?
Danke und lg,
Peter
Hallo Peter,
Wieso bekomme ich aber ein Deny sowohl für /cgi-bin/awstats.pl als auch für /cgi-bin/awstats.pl?config=site1 ?
Weil sich LocationMatch nur auf den Pfad-Teil des URI beschränkt, d.h. der Query-String wird vorher abgetrennt. Sprich: <LocationMatch "/cgi-bin/awstats.pl$"> macht zwar /cgi-bin/awstats.plHalliHallo oder /cgi-bin/awstats.pl/Ciao nicht, aber /cgi-bin/awstats.pl?irgendwas schon.
Wenn Du an Hand von Query-Strings Zugriffe verbieten willst, dann bleibt Dir vermutlich nur mod_rewrite übrig, wo Du per RewriteCond Query-Strings auf ihren Inhalt überprüfen kannst, also zum Beispiel sowas:
# Wenn mod_rewrite zur Verfügung steht
<IfModule mod_rewrite.c>
RewriteEngine On
# Leere Query-String verbieten
RewriteCond %{QUERY_STRING} =""
RewriteRule /cgi-bin/awstats\.pl$ - [F]
# awstats.pl* verbieten
RewriteRule /cgi-bin/awstats\.pl.+$ - [F]
</IfModule>
# Wenn es nicht zur Verfügung steht
<IfModule !mod_rewrite.c>
<Location /cgi-bin/awstats.pl>
# Sicherheitshalber komplett verbieten
Order deny,allow
Deny from all
</Location>
</IfModule>
Ungetestet, sollte aber funktionieren (in der zentralen Config oder einer VHost-Config).
Viele Grüße,
Christian
Hallo,
Leere Query-String verbieten
RewriteCond %{QUERY_STRING} =""
RewriteRule /cgi-bin/awstats.pl$ - [F]
Kleiner Nachtrag: Das verhindert natürlich nicht, dass jemand sowas aufruft wie /cgi-bin/awstats.pl?a=b, wobei a ein Parameter ist, der von awstats.pl nicht interpretiert wird. Du müsstest vermutlich ein komplizierteres Regelwerk bauen, damit Du das so abschotten kannst, wie Du willst.
Viele Grüße,
Christian