donsi: PHP listet außerhallb des Apache-Root Ordners

Hallo,
stecke gerade vor dem denkwürdigem Problem, dass die PHP-Funktion "opendir" wie sie hier: http://de3.php.net/manual/de/function.opendir.php beschrieben ist, nicht im Apache-Root Ordner bleibt.
Ich gebe der Funktion hierfür per GET den Zielordner. Wenn ich z.B. "../../" übergebe, lande ich im Root-Verzeichnis des PCs und könnte das komplette System durchbrowsen.

Hat jemand eine Idee warum PHP das bei mir darf (bei einem anderen Webserver ging's nicht; ein Apache DocumentRott ist definiert!)?

(Arbeite mit Ubuntu 7.10; Apache 2.24 und PHP 5.2.3)

  1. Hallo

    Ich gebe der Funktion hierfür per GET den Zielordner. Wenn ich z.B. "../../" übergebe, lande ich im Root-Verzeichnis des PCs und könnte das komplette System durchbrowsen.

    ja, das ist normal.

    Hat jemand eine Idee warum PHP das bei mir darf (bei einem anderen Webserver ging's nicht;

    weil das normal ist. Das kann man übrigens auch bei anderen Webservern, z.B. dem IIS so konfigurieren.

    ein Apache DocumentRott ist definiert!)?

    Der Zugriff erfolgt über das Dateisystem. Es ist übrigens _sehr erwünscht_ auf Verzeichnisse außerhalb der document_root zugreifen zu können.

    Freundliche Grüße

    Vinzenz

    1. Der Zugriff erfolgt über das Dateisystem. Es ist übrigens _sehr erwünscht_ auf Verzeichnisse außerhalb der document_root zugreifen zu können.

      Wieso sollte es erwünscht sein auf alle Konfigurationsordner freie Sicht zu haben???
      Zwar können die Dateien nicht angesehen werde, aber Dateien welche in meinem Home Ordner liegen müssen trotzdem nicht unbedingt vom Web aus zugreifbar sein...!

      1. Hallo

        Der Zugriff erfolgt über das Dateisystem. Es ist übrigens _sehr erwünscht_ auf Verzeichnisse außerhalb der document_root zugreifen zu können.

        Wieso sollte es erwünscht sein auf alle Konfigurationsordner freie Sicht zu haben???

        sag' ich ja gar nicht :-)
        Außerhalb der document_root sollten z.B. Skriptbibliotheken liegen, Anmeldedaten für die Datenbank, alles mögliche, was nicht direkt ausgeliefert werden soll.

        Zwar können die Dateien nicht angesehen werde, aber Dateien welche in meinem Home Ordner liegen müssen trotzdem nicht unbedingt vom Web aus zugreifbar sein...!

        Dann konfiguriere Deinen Server so, dass dies außer für Deine eigenen Skripte nicht möglich ist.

        Freundliche Grüße

        Vinzenz

        1. Tag,

          Dann konfiguriere Deinen Server so, dass dies außer für Deine eigenen Skripte nicht möglich ist.

          Hm, danke hab ich. Allerdings, damit haßt du wohl recht, Funktionieren jetzt ganz einfache Dinge nicht mehr... z.B. disk_free_space...

  2. Hallo,

    das musst du in der php.ini einstellen.

    mfg steffen

    1. Tag,

      das musst du in der php.ini einstellen.

      Hm, danke. Fragt sich nur noch wo...!?

      1. Tach,

        ; open_basedir, if set, limits all file operations to the defined directory
        ; and below.  This directive makes most sense if used in a per-directory
        ; or per-virtualhost web server configuration file. This directive is
        ; *NOT* affected by whether Safe Mode is turned On or Off.

        Das klingt doch mal nicht schlecht oder?

        mfg steffen

        1. Hallo,

          ; open_basedir, if set, limits all file operations to the defined directory
          ; and below.  This directive makes most sense if used in a per-directory
          ; or per-virtualhost web server configuration file. This directive is
          ; *NOT* affected by whether Safe Mode is turned On or Off.

          Das klingt doch mal nicht schlecht oder?

          Jepp, das klingt super! Zusätzlich, habe ich das hier: http://mrfoo.de/archiv/125-open_basedir-Sicherheitsluecke-in-PHP.html gelesen; die Funktion symlink verboten und schon kann ich nicht mehr durch mein Ubuntu per Browser surfen...

          Mercy!