Open basedir: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
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 | |||
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. | * 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. |
Version vom 17. April 2024, 12:20 Uhr
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 denmysqlnd
-Treiber verwendet, wirdLOAD 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.
AchtungHinweis: Die Verwendung von open_basedir setzt realpath_cache_size auf
0
und deaktiviert somit den realpath-Cache.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.