Hallo Palme,
Sofern Du die Pfadangaben nicht weiter prüfst: ja.
Wie ist das gemwint, sorry, aber ich bin noch kein Experte!
Du musst die Pfadangaben (wie ich Dir im anderen Posting unten, wo Du nur Bahnhof verstanden hast, erklärt habe) manuell prüfen, ob diese in Ordnung sind.
Das heißt also, er kann sich wie in diesem Fall z.B. irgendwelche Dateien auf meinem Rechner ansehen? .. müssen diese aber nicht erst über die Webfreigabe freigeschaltet sein?
PHP hat VOLLZUGRIFF auf Deinen Rechner, zumindest mit den Rechten, die der Benutzer, unter dem Dein Webserver läuft. (Ausnahme: Safe-Mode, aber lassen wir das mal...)
Erstens: Hänge den Pfad immer an das aktuelle Verzeichnis, in dem das Scritp liegt (dirname(__FILE__)) an, und prüfe desweiteren, ob die Zeichenkette .. darin vorkommt. Wenn das der Fall ist, dann verweigere den Zugriff. (Am besten mit "nicht gefunden" oder so) Außerdem solltest Du natürlich prüfen, ob die Datei existiert.
Ich verstehe nur Bahnhof! Tschuldigung!
Du bekommst das aktuelle Verzeichnis über
$akt_verz = dirname(__FILE__);
Du hängst den übergebenen Pfad an das Verzeichnis an:
$neuer_pfad = $akt_verz . '/' . $_GET['pfad'];
Du prüfst, ob die Zeichenkette '..' im Pfad enthalten ist:
if (strpos($neuer_pfad, '..') !== false) {
// Zugriff verweigert
}
Jetzt etwas klarer? (Anm: die Lösung von Thorsten gefällt mir persönlich noch besser)
Grüße,
Christian
Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.