AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP] Directory listing sicher machen - Ordner verbieten
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Directory listing sicher machen - Ordner verbieten

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

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

[PHP] Directory listing sicher machen - Ordner verbieten

  Alt 8. Dez 2009, 11:43
Ist wohl eigentlich eher ein reines PHP Problem aber trotzdem habe ich das Problem im obigen Zusammenhang.

Ich habe ein Array mit Verzeichnissen, die nicht aufgelistet werden dürfen:
Code:
$forbiddenDirs = array("Source", "cgi-bin", "data", "files");
Manipuliert jetzt jemand den Parameter in der URL, soll dies abgefangen werden und derjenige soll zum Wurzelverzeichnis umgeleitet werden. Mein Versuch:
Code:
if ($path != "")
   {         
      foreach($forbiddenDirs as $dir)
      {         
         //               data                     /data                     data/                     /data/
         if ((strpos($path, $dir) > 0) || (strpos($path, '/'.$dir) > 0) || (strpos($path, $dir.'/') > 0) || (strpos($path, '/'.$dir.'/') > 0))         
         {
            header('Location: /');
            exit;
         }
      }
   }
Das funktioniert komischerweise nicht. Aber die Funktion strpos habe ich doch richtig genutzt oder?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: [PHP] Directory listing sicher machen - Ordner verbieten

  Alt 8. Dez 2009, 12:24
Hi!

Auch wenn das dein Problem wahrscheinlich nicht löst, solltest du vllt. besser nicht mit >0 testen sondern eher mit ===.
Siehe dazu auch die Warnung hier: http://php.net/manual/de/function.strpos.php


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: [PHP] Directory listing sicher machen - Ordner verbieten

  Alt 8. Dez 2009, 12:47
Wie soll ich denn mit === auf größer null prüfen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

Re: [PHP] Directory listing sicher machen - Ordner verbieten

  Alt 8. Dez 2009, 12:50
Hi!

Gar nicht, aber warum willst du auch auf größer 0 prüfen?
Ich dachte, du nutzt den Vergleich mit 0 um herausfinden zu können, ob der Wert gefunden wurde? Und so wie ich die Warnung verstehe, soll man das nicht unbedingt tun. Sondern soll eher testen, ob der Wert als FALSE angesehen werden kann (für den Fall, dass nix gefunden wurde).


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: [PHP] Directory listing sicher machen - Ordner verbieten

  Alt 8. Dez 2009, 12:58
Der Ansatz ist IMO sowieso noch nicht ausgereift. Wenn beispielsweise die 4. Bedingung zutrifft ('/'.$dir.'/'), trifft auch automatisch die 2. ('/'.$dir) und/oder 3. ($dir.'/') zu, somit ist die 4. Bedingung überflüssig. Außerdem würden auch Verzeichnisse vom Listing ausgenommen, die den Namen der auszuschließenden enthalten (OK, besser als andersrum, aber trotzdem unschön). Meine PHP-Versuche sind zwar eine Zeit her, aber evtl. sollte man den übergebenen Pfad mit explode() am Slash aufsplitten und mit den Elementen vergleichen (case-insensitive), das würde zumindest einige der genannten Punkte beheben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#6

Re: [PHP] Directory listing sicher machen - Ordner verbieten

  Alt 8. Dez 2009, 13:02
Hi!

Wäre es nicht sowieso sinnvoller das Directory-Listing in den Ordnern mit .htaccess zu verbieten? Wenn ich das aus dem anderen Thread richtig in Erinnerung habe, setzt deine PHP-Lösung doch auch auf .htaccess auf, oder?


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: [PHP] Directory listing sicher machen - Ordner verbieten

  Alt 8. Dez 2009, 13:19
Also so:
Code:
   if ($path != "")
   {         
      foreach($forbiddenDirs as $dir)
      {         
         //               data                           /data                        data/
         if ((!strpos($path, $dir) === false) || (!strpos($path, '/'.$dir) === false) || (!strpos($path, $dir.'/') === false)))         
         {
            header('Location: /');
            exit;
         }
      }
   }
Funktioniert es auch nicht richtig, obwohl in $path die Zeichenketten enthalten sind. Es funktioniert nur bei "/data" und "/data/". Bei "data/" und bei "data" greift die Abfrage irgendwie nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: [PHP] Directory listing sicher machen - Ordner verbieten

  Alt 8. Dez 2009, 13:33
Code:
if ($path != "")
   {         
      foreach($forbiddenDirs as $dir)
      {                 
         if (stripos($path, $dir) !== false)        
         {
            header('Location: /');
            exit;
         }
      }
   }
Wenn "/data" enthalten ist, muss logischerweise auch "data" enthalten sein. Außerdem solltest Du wenn schon case-insensitive prüfen. Ist allerdings ungetestet, ich hab hier kein PHP.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: [PHP] Directory listing sicher machen - Ordner verbieten

  Alt 8. Dez 2009, 13:45
Ja das stimmt und so funktioniert es auch. Nur wollte ich verhindern, dass auch so was erkannt wird: http://www.michael-puff.de/index.php...ataverzeichnis. Da greift die Bedingung jetzt nämlich auch.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#10

Re: [PHP] Directory listing sicher machen - Ordner verbieten

  Alt 8. Dez 2009, 13:47
Hi!

Dann darfst du nicht mit strpos / stripos arbeiten, sondern musst eben wirkliche ==-Vergleiche nutzen (wohl wie schon angedeutet mit explode).


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 21:12 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