![]() |
[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:
<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
![]() Also unbedingt prüfen, ob die Verzeichnisse auch wirklich gelistet werden dürfen ( ![]() Du übergibst ohne zu prüfen den Pfad 1:1 an eine Funktion weiter. Das ist immer sehr kritisch ![]() 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 23:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz