| Unterstützung | PHP 4, PHP 5, PHP 7
|---------------|--------- | Kurzbeschreibung | Hängt eine weitere Textdatei oder ein Skript an das Skript an. | Anforderungen | Andere Textdateien oder Skripte, die eingefügt werden sollen. | Hinweis | Externe Dateien können nicht geladen werden.
Fügt eine andere Textdatei oder ein Skript in die Seite ein. Unterstützt Plain/Text-Dateien.
Eingebettete Dateien verhalten sich so, als befänden sie sich direkt auf der Seite.
Eingebettete Skripte werden automatisch ausgeführt.
Das eingebettete Skript überträgt den Wert von Variablen.
Kann nicht von externem Speicher geladen werden. Kann nur einfachen unformatierten Text und PHP-Dateien lesen.
Erlaubte Pfadformate:
script.php
- Datei im gleichen Verzeichnis, wird ausgeführtscript.html
- Datei im gleichen Verzeichnis, wird nicht ausgeführt./file.php
- Datei im gleichen Verzeichnis, wird ausgeführt../page.html
Schrägstriche des Typs ****
und **/**
können miteinander konvertiert werden, so dass Sie sich damit nicht befassen müssen.
Unzulässiger Pfadeintrag: https://domena.pripona/slozka/soubor.php
include 'file.php';
Es fügt das Skript "file.php" in die Seite ein und führt es aus.
'vars.php'
$color = 'grün';$fruit = 'Apfel';
test.php
$color = '';$fruit = '';echo 'A' . $color . '' . $fruit; // Ainclude 'vars.php';echo 'A' . $color . '' . $fruit; // Ein grüner Apfel
WARNUNG: Die folgende Notation ist nicht möglich, übertragen Sie den Inhalt von Variablen, indem Sie sie definieren!
include 'datei.php?parameter=neco';
Keine, legt nur die Datei ab.
HINWEIS: Ermöglicht den Vergleich von Dateiinhalten, was jedoch ein Sicherheitsrisiko darstellt. Die Reihenfolge der Klammern ist wichtig! Beispiel:
if ((include 'file.php') == 'OK') {echo 'Der Wert ist "OK".';}
Dies ist ein potenzielles Sicherheitsrisiko!
Kann mit file_get_contents(), readfile() oder fopen() gelöst werden. Fopen() sollte nur für .txt- und .html-Dateien verwendet werden.
Ein sichereres Lesen der Datei kann durch die Definition einer eigenen Funktion erreicht werden.
Beispiel:
$string = get_include_contents('somefile.php');function get_include_contents(string $filename): ?string{if (is_file($filename)) {ob_start();include (string) $filename;return ob_get_clean();}return null;}
Jakub Vrána hat mir eine E-Mail geschickt:
include 'Artikel/' . $_GET['Artikel'] . '.html';
Dies ist äußerst gefährlich.
Ein Angreifer kann einen Link zu einem anderen Verzeichnis übergeben, indem er ../
oder etwas Ähnliches als Artikelnamen verwendet, und manchmal ist es möglich, die Endung loszuwerden, indem ein Null-Byte am Ende übergeben wird.
Sie sollten zumindest die Funktion basename()
verwenden, aber besser ist es, nur Werte aus der Whitelist zuzulassen.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | de