Open basedir: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „{{DISPLAYTITLE:open_basedir}} ; <code>open_basedir</code> string : Begrenzt die Dateien, auf die von PHP zugegriffen werden kann, auf einen bestimmten Ordner inklusive seiner 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…“
 
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
{{DISPLAYTITLE:open_basedir}}
{{DISPLAYTITLE:open_basedir}}


; <code>open_basedir</code>     string
; <code>open_basedir</code> string
: Begrenzt die Dateien, auf die von PHP zugegriffen werden kann, auf       einen bestimmten Ordner inklusive seiner 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       <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. Der spezielle Wert <code>.</code> gibt       an, dass das Arbeitsverzeichnes des Skriptes als Basis-Verzeichnis       verwendet wird. Dies ist gefährtlich, 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. 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.<blockquote>'''Hinweis''': open_basedir kann zur Laufzeit weiter eingeschränkt werden. Das heißt,       wenn open_basedir laut <var>php.ini</var> auf <code>/www/</code> gesetzt       ist, kann die Direktive zur Laufzeit mit ini_set()       beispielsweise weiter auf <code>/www/tmp/</code> begrenzt       werden. Wenn mehrere Verzeichnisse aufgelistet werden, kann die       Konstante '''<code>PATH_SEPARATOR</code>''' unabhängig vom       Betriebssystem als Trennzeichen verwendet werden.</blockquote><blockquote>'''Hinweis''': Die Verwendung von open_basedir setzt       realpath_cache_size auf       <code>0</code> und ''deaktiviert'' somit den       realpath-Cache.</blockquote>'''Achtung''' <code>open_basedir</code> 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.
: Begrenzt die Dateien, auf die von PHP zugegriffen werden kann, auf einen bestimmten Ordner inklusive seiner 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 <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.  
* Der spezielle Wert <code>.</code> gibt an, dass das Arbeitsverzeichnes des Skriptes als Basis-Verzeichnis verwendet wird.  
* Dies ist gefährtlich, 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).  
* 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.<blockquote>'''Hinweis''': open_basedir kann zur Laufzeit weiter eingeschränkt werden.  
* Das heißt, wenn open_basedir laut <var>php.ini</var> auf <code>/www/</code> gesetzt ist, kann die Direktive zur Laufzeit mit ini_set() beispielsweise weiter auf <code>/www/tmp/</code> begrenzt werden.  
* Wenn mehrere Verzeichnisse aufgelistet werden, kann die Konstante '''<code>PATH_SEPARATOR</code>''' unabhängig vom Betriebssystem als Trennzeichen verwendet werden.</blockquote><blockquote>'''Hinweis''': Die Verwendung von open_basedir setzt realpath_cache_size auf <code>0</code> und ''deaktiviert'' somit den realpath-Cache.</blockquote>'''Achtung''' <code>open_basedir</code> 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.


[[Kategorie:PHP]]
[[Kategorie:PHP]]
{{DEFAULTSORT:open_basedir}}
{{DEFAULTSORT:open_basedir}}

Version vom 17. April 2024, 10:46 Uhr


open_basedir string
Begrenzt die Dateien, auf die von PHP zugegriffen werden kann, auf einen bestimmten Ordner inklusive seiner 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 Arbeitsverzeichnes des Skriptes als Basis-Verzeichnis verwendet wird.
  • Dies ist gefährtlich, 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.