open_basedir

Aus Foxwiki

open_basedir - Begrenzt die Dateien, auf die von PHP zugegriffen werden kann

Beschreibung

open_basedir string

Begrenzt die Dateien, auf die von PHP zugegriffen werden kann

  • Ordner inklusive Unterordner

Wenn ein Skript versucht, auf eine Datei zuzugreifen, zum Beispiel mit include oder fopen(), wird der Ort der Datei geprüft.

  • Wenn die Datei nicht im Verzeichnisbaum liegt, der in open_basedir angegeben ist, wird PHP nicht auf die Datei zugreifen.
  • Alle symbolischen Verknüpfungen werden aufgelöst, sodass es nicht möglich ist, diese Beschränkung mit einem Symlink zu umgehen.
  • Wenn die Datei nicht existiert, kann die Verknüpfung nicht aufgelöst werden und der Dateiname wird mit (einem aufgelösten) open_basedir verglichen. open_basedir kann sich auf mehr als nur Dateisystemfunktionen auswirken.
  • Wenn zum Beispiel MySQL so konfiguriert ist, dass es den mysqlnd-Treiber verwendet, wird LOAD DATA INFILE von open_basedir beeinflusst.
  • Ein Großteil der erweiterten Funktionalität von PHP verwendet open_basedir auf diese Weise.
  • Der spezielle Wert . gibt an, dass das Arbeitsverzeichnis des Skriptes als Basis-Verzeichnis verwendet wird.
  • Dies ist gefährlich, da das Arbeitsverzeichnis mit chdir() einfach geändert werden kann.
  • In der Konfigurationsdatei httpd.conf kann open_basedir genau wie jede andere Direktive mit "php_admin_value open_basedir none" geändert oder deaktiviert werden (z.  B. für einige virtuelle Hosts).
  • Unter Windows müssen die Verzeichnisse mit einem Semikolon getrennt werden, auf allen anderen Systemen mit einem Doppelpunkt.
  • Wenn PHP als Apache-Modul läuft, erbt open_basedir seinen Pfad nun automatisch von übergeordneten Verzeichnissen.
  • Die mit open_basedir angegebene Einschränkung ist ein Verzeichnisname, kein Präfix.
  • Standardmäßig dürfen alle Dateien geöffnet werden.

    Hinweis: open_basedir kann zur Laufzeit weiter eingeschränkt werden.

  • Das heißt, wenn open_basedir laut php.ini auf /www/ gesetzt ist, kann die Direktive zur Laufzeit mit ini_set() beispielsweise weiter auf /www/tmp/ begrenzt werden.
  • Wenn mehrere Verzeichnisse aufgelistet werden, kann die Konstante PATH_SEPARATOR unabhängig vom Betriebssystem als Trennzeichen verwendet werden.

    Hinweis: Die Verwendung von open_basedir setzt realpath_cache_size auf 0 und deaktiviert somit den realpath-Cache.

    Achtung open_basedir ist nur ein zusätzliches Sicherheitsnetz, das in keiner Weise umfassend ist und daher nicht als verlässlich angesehen werden kann, wenn Sicherheit erforderlich ist.


Anhang

Siehe auch

Links

Weblinks