AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP] Verzeichnisse verdoppeln sich in Links nach Umleitung

[PHP] Verzeichnisse verdoppeln sich in Links nach Umleitung

Ein Thema von Luckie · begonnen am 6. Dez 2009 · letzter Beitrag vom 8. Dez 2009
Antwort Antwort
Seite 1 von 3  1 23   
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

[PHP] Verzeichnisse verdoppeln sich in Links nach Umleitung

  Alt 6. Dez 2009, 15:04
Ich habe folgendes Problem. Ich habe in manchen Verzeichnissen eine .htaccess Datei liegen mit folgendem Inhalt:
Code:
DirectoryIndex /index.php?path=./Artikel
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:
Code:
<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>
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.

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";
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#2

Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit

  Alt 6. Dez 2009, 15:13
Es steht /Artikel/ wahrscheinlich norrens in der Variablen "Path" drin.

Zeig mal die Stelle, wo Path etwas zugewiesen wird =)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit

  Alt 6. Dez 2009, 15:28
Zitat von MichaelLinden:
Es steht /Artikel/ wahrscheinlich norrens in der Variablen "Path" drin.
Kann icht sein, denn dann würde auch der Link im HTML falsch zusammengebaut. Außerdem wird die Variable auch richtig ausgegeben. Das ist es ja, was mich so verwirrt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.987 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit

  Alt 6. Dez 2009, 15:29
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit

  Alt 6. Dez 2009, 15:32
Code:
$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>';
   }
Das ist alles, was ich mit der Variablen mache.

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";
               }               
            }
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.987 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit

  Alt 6. Dez 2009, 15:35
Zitat von Luckie:
Wie bekomme ich den Fehler weg und wie mache ich das Skript sicher?
Indem du die Parameter genau prüfst, beispielsweise so:

Code:
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
Oder so irgendwie.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit

  Alt 6. Dez 2009, 15:40
OK, aber das behebt natürlich den Fehler mit den doppelten Ordnern nicht. Das wäre erstmal mein primäres Problem.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.987 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit

  Alt 6. Dez 2009, 15:45
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:
$link = 'index.php?path='.$path.'/'.$dir;
somit den falschen Pfad erstellst? Was steht denn in "$dir"?

Grüße, Matze
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit

  Alt 6. Dez 2009, 15:50
Werde ich heute Abend mal gucken. Muss leider erstmal weg.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: [PHP] Verzeichnisse verdoppeln sich in Links nach Umleit

  Alt 6. Dez 2009, 20:31
In einem Verzeichnis ohne Unterordner ist sie leer. Aber sie hat ja auch nichts mit dem Link zur Datei zu tun.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf