Page 1 of 1
Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-06 14:49
by snowball
Hallo zusammen,
mein Problem ist folgendes.
Ich möchte Über .htaccess oder Konfiguration meines Apache 2.2 den Zugriff nur auf bestimmte Dateien erlauben. Z.B. index.php, main.php und *.jpg.
Hätte da jemand einen Hinweis für mich? Alles was ich in der reichlich vorhanden Dokumentation gefunden habe, ist die umgekehrte Version, bei der ich bestimmte Dateien ausschließen kann.
Danke schonmal.
Cheers,
Jochen
Re: Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-06 15:09
by Joe User
Einzige Möglichkeit: Alle Files/Dirs die nicht von Apache verarbeitet werden sollen einer dedizierten User/Group-Kombination zuordnen und keine world-Rechte vergeben.
Re: Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-06 15:11
by snowball
Joe User wrote:Einzige Möglichkeit: Alle Files/Dirs die nicht von Apache verarbeitet werden sollen einer dedizierten User/Group-Kombination zuordnen und keine world-Rechte vergeben.
Mhh, nicht so kompfortabel wie ich es mir erhofft hatte, aber immerhin eine Lösung.
Vielen Dank.
Re: Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-06 15:31
by dotme
snowball wrote:Alles was ich in der reichlich vorhanden Dokumentation gefunden habe, ist die umgekehrte Version, bei der ich bestimmte Dateien ausschließen kann.
Sollte einem aber nicht schwerfallen so ein Beispiel anzupassen, oder?
Zumindest müßtest Du in etwa in diese Richtung gehen (ungetestet):
Code: Select all
# cat .htaccess
Order Deny,Allow
Deny from All
<FilesMatch "^((main|index).php|.+.jpg)$">
Allow from All
</FilesMatch>
Du kannst das auch unverändert in einen <Directory>-Kontext schreiben.
Re: Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-06 15:37
by Joe User
dotme wrote:Zumindest müßtest Du in etwa in diese Richtung gehen (ungetestet):
Allerdings schmeisst Apache dann Error 403 statt 404 bei den verbotenen Files...
Re: Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-06 15:37
by snowball
dotme wrote:Sollte einem aber nicht schwerfallen so ein Beispiel anzupassen, oder?
Doch, genau das ist mir schwer gefallen. Aber dein Bespiel funktioniert genau so, wie ich mir das gewünscht habe. Vielen Dank für Eure Hilfe.
Cheers,
Jochen
Re: Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-14 19:09
by dante77
Macht das ganze eigentlich wirklich Sinn? Wirklich interessante Dateien wie /etc/passwd holt sich ein Angreifer ja eher über Löcher in PHP-Skripten.
Re: Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-14 19:15
by snowball
Für micht macht es schon Sinn.
Es geht mir nicht um das anzeigen von Systemdateien. Sondern um das verhindern von direktem Zugriff auf template Daten. Die templates werden von meinem PHP includet. sollen aber nicht direkt anzeigbar sein. Normalerweise verhinderer ich das direkte anzeigen auch durch php funktionen. Die .htaccess Datei sollte auch nur als zusäzlicher Schutz dienen.
Leider funtkoiniert sie nicht so wie ich das wollte. Mit der weiter oben beschriebenen Datei wird auch der Aufruf ohne index Datei verhindert.
z.B
http://www.domain.de/ <- geht nicht
http://www.domain.de <- geht nicht
http://www.domain.de/index.php <- geht
Lieder habe ich noch nicht rausgefunden woran es liegt.
Re: Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-14 19:23
by Roger Wilco
snowball wrote:Lieder habe ich noch nicht rausgefunden woran es liegt.
Die FilesMatch Direktive von oben enthält keinen RegEx für "^$", also einen leeren String, wie es beim Aufruf ohne index.php vorkommt.
Ein weiterer Ansatz wäre, alle Dateien, auf die nicht zugegriffen werden soll, in ein Verzeichnis zu packen und dieses mit "Deny from all" zu schützen. Aber eigentlich sollten solche Dateien erst gar nicht im DocumentRoot der Domain liegen. ;)
Re: Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-14 19:25
by dante77
Probiers mal damit? (nur ein pipe mehr)
Code: Select all
<FilesMatch "^((main|index).php|.+.jpg|)$">
Re: Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-14 19:29
by snowball
Roger Wilco wrote:
Die FilesMatch Direktive von oben enthält keinen RegEx für "^$", also einen leeren String, wie es beim Aufruf ohne index.php vorkommt.
Danke für den Tipp, scheint aber auch nicht zu funktionieren.
Code: Select all
Order Deny,Allow
Deny from All
<FilesMatch "^((main|index).php|.+.jpg|.+.png|.+.css|.+.pdf|^$)$">
Allow from All
</FilesMatch>
dante77 wrote:Probiers mal damit? (nur ein pipe mehr)
Code: Select all
<FilesMatch "^((main|index).php|.+.jpg|)$">
Führt zu "Internal Server Error" Fehler 500
Regular Expressions ist einfach nicht meine Welt :(
Re: Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-14 19:33
by Roger Wilco
Code: Select all
<FilesMatch "^((main|index).php|.+.(jpg|png|css|pdf))?$">
Allow from all
</FilesMatch>
Ungetestet, sollte aber funktionieren. Die Variante mit den Dateien außerhalb des DocumentRoots oder in einem eigenen Verzeichnis ist aber vorzuziehen, zumal du dann auch eine organisatorische Trennung auf Dateisystemebene hast.
Re: Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-14 19:40
by snowball
Roger Wilco wrote:
Ungetestet, sollte aber funktionieren.
Nein, bei meinem Apache 1.3.37 leider nicht. Gleiches Problem wie vorher, auch wenn der Code besser aussieht
Roger Wilco wrote:
Die Variante mit den Dateien außerhalb des DocumentRoots oder in einem eigenen Verzeichnis ist aber vorzuziehen, zumal du dann auch eine organisatorische Trennung auf Dateisystemebene hast.
Da hast du natürlich recht. Aber den Aufwand möchte ich dafür nicht betreiben. Ich bin grade dabei, eine Webseite zu erstellen (Nur 'ne kleine für den Sportverein). Da ich aber noch keine Ahnung habe, ob ich die danach auch hosten werde, oder das jemand anderes übernimmt, versuche ich das ganze so einfach wie möglich zu hallten. Wenn ich bei der Übergabe der Seite auch noch eine Installationsanleitung für einen Webserver mitgeben muss, würde das den Rahmen sprengen.
Re: Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-14 19:45
by dante77
Sowohl Roger Wilcos als auch mein regulärer Ausdruck sind valide und matchen sowohl die Dateien als auch den leeren String. Aber offenbar führt es beim Apache zu einem Fehler, wenn ein leerer String gematcht wird (IMHO)
Re: Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-14 20:17
by Roger Wilco
snowball wrote:Da hast du natürlich recht. Aber den Aufwand möchte ich dafür nicht betreiben.
Die Templates liegen vermutlich schon in einem eigenen Verzeichnis, in das du einfach eine entsprechende .htaccess Datei packen kannst. Dazu sind keine Installationsanweisungen nötig.
Re: Zugriff auf bestimmte Dateien erlauben
Posted: 2007-06-14 20:21
by snowball
Roger Wilco wrote:Die Templates liegen vermutlich schon in einem eigenen Verzeichnis, in das du einfach eine entsprechende .htaccess Datei packen kannst. Dazu sind keine Installationsanweisungen nötig.
Mhh, hast recht. so hätte es mir zwar besser gefallen, aber das ist natürlich auch ne gute Lösung. Mache ich es halt so.
Vielen Dank für den Denkanstoss.