Teil von  SELFPHP
Professional CronJob-Service

Suche

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP?
In über 130.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 
 
Übermittelte Dateinamen überprüfen

Am Ende der Seite finden Sie das komplette Beispiel als Download.

Systemvoraussetzung

  • Linux
  • Windows
  • PHP 3 >= 3.0.9
  • PHP 4
  • PHP 5
  • PCREBibliothek

Datei(en)

file_check.php

Problem


Sie bieten Dateien zum Download an, und die Dateinamen werden dabei per GET oder POST übermittelt. Anschließend rufen Sie diese Datei auf und bieten dann dem Besucher die gerade geholte Datei zum Download an.

Dieses Szenario sieht man sehr oft im Internet. Sie sollten sich aber immer eines vor Augen führen: Variablen, die von außerhalb des eigenen Programmcodes kommen, sind in erster Linie als „Feinde“ anzusehen. Wir sollten diesen Variablen also niemals einfach trauen, sondern sie immer überprüfen.

Somit wäre es unter Umständen möglich, mit folgendem Variableninhalt die Passwortdatei des eigenen Servers auszuliefern. Was das bedeuten kann, werden Sie sich sicherlich vorstellen können. Deshalb trauen Sie keiner Variablen, die von außen kommt!

../../../../etc/passwd

Wir müssen sämtliche Variablen, die von außerhalb kommen und uns Schaden zufügen könnten, überprüfen. Dafür nutzen wir in unserem Beispiel preg_match() (29, 34). Wenn Sie Dateien zum Download anbieten und diese per PHP ausliefern, lassen Sie sich lediglich den reinen Dateinamen übermitteln und setzen den Verzeichnisnamen fest in der PHPDatei ein.

Wir müssen dann nur noch die Variable daraufhin überprüfen, ob sie ein oder mehrere Slashes beinhaltet. Ist das der Fall, brechen wir mit einer Fehlermeldung ab (30, 35), ansonsten können wir die Datei ausliefern (32, 37).

In unserem Beispiel haben wir zwei Arrays zur Anschauung genutzt. Sie sollten die Arrays später durch Ihre POST- oder GET-Variablen ersetzen.

26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
$test[0] = "../../../../etc/passwd"
$test[1] = "wert.txt";

if(
preg_match('=/='$test[0]))
    echo 
'Fehler! ' $test[0] . ' ist nicht erlaubt.<br>';
else
    echo 
'Datei ' $test[0] . ' ist in Ordnung.<br>';

if(
preg_match('=/='$test[1]))
    echo 
'Fehler! ' $test[1] . ' ist nicht erlaubt.<br>';
else
    echo 
'Datei ' $test[1] . ' ist in Ordnung.<br>';
Beispiel 4.4: file_check.php

Ausgabe im Browser

Fehler! ../../../../etc/passwd ist nicht erlaubt. Datei wert.txt ist in Ordnung.

Sie sehen nachfolgend die geänderte Version für die Übermittlung von GET-Variablen. Sie müssen lediglich den Variablennamen anpassen.

1:
2:
3:
4:
5:
6:
7:
<?PHP
$_GET
['filename'];
if(
preg_match('=/='$_GET['filename']))
    echo 
'Fehler! ' $_GET['filename'] . ' ist nicht erlaubt.<br>';
else
    
// Download starten
?>


 


Dieses Skript aus dem SELFPHP KOCHBUCH wurde von SELFPHP unter dem "Tarif Mc500" von McAc.net-Webhosting erfolgreich ausgeführt und getestet!

Auf der Übersichtseite unter "McAc.net – Webhosting zu diesem Buch" finden Sie weitere Informationen zu dem Webhostingpaket, dass durch SELFPHP getestet wurde.




 

Download

Info   ZIP BZIP2 TARGZ
Größe   742.00 Byte 875.00 Byte 817.00 Byte

Alle Beispiele als PHP-Datei(en)

Hier haben Sie die Möglichkeit, sich sämtliche auf dieser Seite gezeigten Beispiele als PHP-Dateien direkt downzuloaden.

Umständliches Copy & Paste ist daher nicht mehr notwendig, da alle Beispiele sofort ausprobiert werden können.

Sie haben bei der Auswahl der bereitgestellten Downloads mehrere Möglichkeiten, je nachdem welches Komprimierungsverfahren Sie bevorzugen.

Zurück zur Übersichtsseite


 




:: Premium-Partner ::

Webhosting/Serverlösungen

Pixel X weitere Premium-Partner
 

:: SELFPHP Sponsor ::

HighText Verlag Graf und Treplin OHG weitere Sponsoren
 


:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Webhosting/Serverlösungen

Suchen Sie den für Sie passenden IT-Dienstleister für Ihr Webhosting-Paket oder Ihre Serverlösung?

Sie sind nur ein paar Klicks davon entfernt!


 

Ausgewählter Tipp im Bereich PHP-Skripte


Dateien und Verzeichnisse mit TAR/Gzip komprimieren

Weitere interessante Beispiele aus dem SELFPHP Kochbuch finden Sie im Bereich PHP-Skripte
 

SELFPHP Code Snippet


MySQL-Versionsnummer anzeigen

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2024 E-Mail SELFPHP Inh. Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005-2024 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de