Systemdateien schützen

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Systemdateien schützen

Postby drwx » 24. April 2006 12:35

Ich benutze XAMPP für Windows mit einer vollständig laufenden Virtual Host-Konfiguration.

Meine Konfiguration (Auszug):

Code: Select all
ServerRoot "C:/Programme/xampp/apache"
DocumentRoot "C:/WWW"

<Directory "C:/">
    Options None
    AllowOverride None

    Order allow,deny
    deny from all
</Directory>


<VirtualHost *:80>
    ServerAdmin benutzer1@domain.local
    DocumentRoot "C:/WWW/benutzer1"
    ServerName benutzer1.domain.local:80
    ErrorLog "logs/benutzer1-error.log"
    CustomLog "logs/benutzer1-access.log" common

    <Directory "C:/WWW/benutzer1/">
      Options None
      AllowOverride AuthConfig
      Order allow,deny
      Allow from all
    </Directory>

</VirtualHost>


Mein Problem: Ich kann aus dem Verzeichnis des benutzer1 C:\WWW\benutzer1 über ein php-script auf Dateien in C:\Windows zugreifen, bzw. mir anzeigen lassen.
Ich habe mir in der Apache-Dokumentation die Direktiven zu <directory>, <Files> und <Location> durchgelesen, aber keinen Fehler erkennen können.

Ich habe schon mehrere verschiedene Versionen für <Directory /> ausprobiert, aber bisher hat keine gegriffen:

Code: Select all
<Directory />
    Options None
    AllowOverride None

    Order allow,deny
    deny from all
</Directory>


oder:

Code: Select all
<Directory "C:*">
    Options None
    AllowOverride None

    Order allow,deny
    deny from all
</Directory>


Code: Select all
<Directory "C:/*">
    Options None
    AllowOverride None

    Order allow,deny
    deny from all
</Directory>



Meine Frage: Wie erreiche ich es, dass die Virtual-Hosts nur innerhalb der Ihnen zugeteilten Verzeichnisse Zugriff haben und keine Systemdateien mehr auslesen können ?

Hat es eventuell etwas damit zu tun, dass das DocumentRoot nicht innerhalb des ServerRoot liegt ? oder bin ich einfach zu blöd die <Directory /> Direktive zu konfigurieren ?

P.S.: PHP läuft im Safe-Mode (falls das noch hilfreich sein könnte)
drwx
 
Posts: 3
Joined: 24. April 2006 12:12

Postby Wiedmann » 24. April 2006 15:46

Directiven in der "httpd.conf" sind nur für Zugriffe über HTTP(S) zuständig. PHP greift aber direkt über das Dateisystem auf die Dateien zu. Evtl. hilft dir da "open_basedir" weiter.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby drwx » 24. April 2006 16:25

Vielen Dank für Deinen Hinweis !

Habe mir grad einmal angeschaut, um was es sich dabei handelt. Ich denke auch, dass mir das weiterhelfen könnte.

Jetzt bin ich wenigstens auf dem richtigen Weg..
Zum Ausprobieren komme ich aber erst später. Aber ich werde noch berichten, wie es ausgegangen ist
drwx
 
Posts: 3
Joined: 24. April 2006 12:12

Postby drwx » 24. April 2006 20:26

Nochmals vielen Dank !

Hat wunderbar funktioniert. Des Rätsels Lösung:

Innerhalb des jeweiligen <VirtualHost>-Container muss folgender Befehl eingefügt werden, um den Benutzer mit PHP auf bestimmte Verzeichnisse einzugrenzen:

Code: Select all
php_admin_value open_basedir C:/WWW/benutzer1/


mehrere Verzeichnisse kann man mit ; trennen:

Code: Select all
php_admin_value open_basedir C:/WWW/benutzer1/;C:/Scriptesammlung/


Hinweis: Die open_basedir Direktive in der php.ini greift nicht mehr, wenn sie in der httpd.conf schon benutzt wird. Eine Allgemeine open_basedir Restriktion + zusätzlicher in den VirtualHosts ist also nicht möglich. Man muss allgemein gültige Sciptverzeichnisse in jedem VirtualHost einzeln "freigeben"
drwx
 
Posts: 3
Joined: 24. April 2006 12:12


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 46 guests