Open basedir: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
{{DISPLAYTITLE:open_basedir}}
{{DISPLAYTITLE:open_basedir}}
'''open_basedir''' - Begrenzt die Dateien, auf die von PHP zugegriffen werden kann


; <code>open_basedir</code> ''string''
; <code>open_basedir</code> ''string''
Zeile 8: Zeile 10:
Wenn ein Skript versucht, auf eine Datei zuzugreifen, zum Beispiel mit include oder fopen(), wird der Ort der Datei geprüft.  
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.  
* 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.  
* 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 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 <code>MySQL</code> so konfiguriert ist, dass es den <code>mysqlnd</code>-Treiber verwendet, wird <code>LOAD DATA INFILE</code> von '''open_basedir''' beeinflusst.  
* Wenn zum Beispiel <code>MySQL</code> so konfiguriert ist, dass es den <code>mysqlnd</code>-Treiber verwendet, wird <code>LOAD DATA INFILE</code> von '''open_basedir''' beeinflusst.  
* Ein Großteil der erweiterten Funktionalität von PHP verwendet <code>open_basedir</code> auf diese Weise.  
* Ein Großteil der erweiterten Funktionalität von PHP verwendet <code>open_basedir</code> auf diese Weise.  
* Der spezielle Wert <code>.</code> gibt an, dass das Arbeitsverzeichnes des Skriptes als Basis-Verzeichnis verwendet wird.  
* Der spezielle Wert <code>.</code> gibt an, dass das Arbeitsverzeichnis des Skriptes als Basis-Verzeichnis verwendet wird.  
* Dies ist gefährtlich, da das Arbeitsverzeichnis mit chdir() einfach geändert werden kann.  
* Dies ist gefährlich, da das Arbeitsverzeichnis mit chdir() einfach geändert werden kann.  
* In der Konfigurationsdatei <var>httpd.conf</var> kann '''open_basedir''' genau wie jede andere Direktive mit "<code>php_admin_value open_basedir none</code>" geändert oder deaktiviert werden (z.&nbsp;&nbsp;B.&nbsp;für einige virtuelle Hosts).  
* In der Konfigurationsdatei <var>[[httpd.conf]]</var> kann '''open_basedir''' genau wie jede andere Direktive mit "<code>php_admin_value open_basedir none</code>" geändert oder deaktiviert werden (z.&nbsp;&nbsp;B.&nbsp;für einige virtuelle Hosts).  
* Unter Windows müssen die Verzeichnisse mit einem Semikolon getrennt werden, auf allen anderen Systemen mit einem Doppelpunkt.  
* 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.  
* Wenn PHP als Apache-Modul läuft, erbt '''open_basedir''' seinen Pfad nun automatisch von übergeordneten Verzeichnissen.  

Version vom 17. April 2024, 14:37 Uhr


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

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.