[PHP] Verzeichnisse verdoppeln sich in Links nach Umleitung
Ich habe folgendes Problem. Ich habe in manchen Verzeichnissen eine .htaccess Datei liegen mit folgendem Inhalt:
Code:
Damit wird mein Skript für die Directory listings für das entsprechende Verzeichnis aufgerufen. Das Directory listing wird auch erstellt. Im Quelltext sieht das dann so aus:
DirectoryIndex /index.php?path=./Artikel
Code:
Die Links stimmen also. Fahre ich aber im Browser über den Link steht in der Statusleiste: http://www.michael-puff.de/Artikel/A...rwuerfel.shtml. Also der Ordner zwei mal. Wo kommt der her, wo er doch gar nicht im Quellcode steht.
<tr><td class="noborder">[url="./Artikel/APIZauberwuerfel.shtml"]APIZauberwuerfel.shtml[/url]</td><td class="noborder" align="right">4k</td><td class="noborder" align="center" width=150px>2005-11-13 02:19</td><td class="noborder">Die Windows-API ist wie ein Zauberwürfel</td></tr>
Derr Code zum Erstellen:
Code:
echo "<tr><td class=\"noborder\"><a href=\"".$path."/".$file."\">".$file."</a></td><td class=\"noborder\" align=\"right\">".$size."k</td><td class=\"noborder\" align=\"center\" width=150px>".date("Y-m-d H:i",filemtime($path."/".$file))."</td><td class=\"noborder\">".getTitleFromHTML($path."/".$file)."</td></tr>\n";
|
Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit
Es steht /Artikel/ wahrscheinlich norrens in der Variablen "Path" drin.
Zeig mal die Stelle, wo Path etwas zugewiesen wird =) |
Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit
Zitat:
|
Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit
Was mir auffällt, dass du vermutlich Sicherheitslücken im Skript hast. Eine Manipulation der URL darf keine PHP-Fehler zur Folge haben (wie hier).
Also unbedingt prüfen, ob die Verzeichnisse auch wirklich gelistet werden dürfen (sollte das gelistet werden?). Sonst kommt u.U. das böse Erwachen, wenn Konfigurationsdateien aufgelistet und geöffnet werden können. Du übergibst ohne zu prüfen den Pfad 1:1 an eine Funktion weiter. Das ist immer sehr kritisch s. hier). Merke: Überprüfe IMMER alle Parameter auf ihre Gültigkeit und gehe NIE davon aus, dass der Besucher nur auf deinen Links herumklickt. Das gilt natürlich auch für include() & Co. Ich persönlich nutze beispielsweise nur absolute Pfade. Dann kann ausgeschlossen werden, dass Dateien von Fremden Servern eingebunden werden. |
Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit
Code:
Das ist alles, was ich mit der Variablen mache.
$path = $_GET['path']; // z.B. path=./Artikel
if ($path == './Privat') { header('Location: /Privat'); } if ($path == '') { $path = '.'; } $dirs = listDirs($path.'/'); $files = listFiles($path.'/'); if (!file_exists(str_replace("./", "", $path))) { header('Location: '.$path); } if ($path != ".") { foreach($defaultPages as $file) { if (file_exists($path."/".$file)) { header('Location: '.$path."/".$file); exit; } } } if ($path != '.') { echo ' [b]Inhalt von: '.str_replace("./", "", $path).'[/b]</p>'; } Wie bekomme ich den Fehler weg und wie mache ich das Skript sicher? Und die Ausgabe:
Code:
echo '<table class="noborder">';
if ($path != '.') { echo "<tr><td class=\"noborder\"><a href=\"/index.php?path=".$parentDir."\">..</a></td><td class=\"noborder\"></td><td class=\"noborder\"></td></tr>\n"; } foreach ($dirs as $dir) { if (!in_array($dir, $forbiddenDirs)) { $link = 'index.php?path='.$path.'/'.$dir; echo "<tr><td class=\"noborder\"><a href=\"".$link."\">".$dir."</a></td><td class=\"noborder\" align=\"center\">[DIR]</td><td class=\"noborder\" align=\"center\" width=150px>".date("Y-m-d H:i",filemtime($path."/".$dir))."</td><td class=\"noborder\"</td></tr>\n"; } } foreach ($files as $file) { if (!in_array($file, $hiddenFiles)) { $size = number_format(ceil(filesize($path.'/'.$file) / 1024), 0); echo "<tr><td class=\"noborder\"><a href=\"".$path."/".$file."\">".$file."</a></td><td class=\"noborder\" align=\"right\">".$size."k</td><td class=\"noborder\" align=\"center\" width=150px>".date("Y-m-d H:i",filemtime($path."/".$file))."</td><td class=\"noborder\">".getTitleFromHTML($path."/".$file)."</td></tr>\n"; } } |
Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit
Zitat:
Code:
Oder so irgendwie.
if (((file_exists($abs_path . $param_path)) // prüfen, ob die Dateien auf deinem Server liegen
&& (in_array($param_path, $arr_listing_allowed))) // prüfen, ob der Pfad im Array für zugelassene Verzeichnisse liegt // ... include($abs_path . $param_path); // immer absolute Pfade nutzen |
Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit
OK, aber das behebt natürlich den Fehler mit den doppelten Ordnern nicht. Das wäre erstmal mein primäres Problem.
|
Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit
Nein, dein primäres Problem ist die Sicherheit deiner Daten.
Zu deinem sekundären Problem: Kann es sein, dass "$dir" bereits einen Teil des Pfades enthält und du hier
Code:
somit den falschen Pfad erstellst? Was steht denn in "$dir"?
$link = 'index.php?path='.$path.'/'.$dir;
Grüße, Matze |
Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit
Werde ich heute Abend mal gucken. Muss leider erstmal weg.
|
Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit
In einem Verzeichnis ohne Unterordner ist sie leer. Aber sie hat ja auch nichts mit dem Link zur Datei zu tun.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz