Webhilfe.info/board

Normale Version: Nochmal das Upl0adscript :)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Hi,
ich habe da ein kleines problem mit meinem Uploadscript.
Ich kann in meinem Uploadscript bestimmen, welche Dateien geuploadet werden dürfen, darunter Fallen beispielsweise .jpg, .gif, .png usw.

Nun hat aber ein Hacker eine Datei mit dem Namen .php.jpg auf den Server gespielt und mit dieser PHP-Datei meinen Server, nunja, sagen wir einmal "gereinigt"..
Wollte fragen, ob jemand den Code kennt, um Dateiendungen wie beispielsweise .php.rar
zu verbieten und mir den gleich mit einbauen könnte?

Hab das Script mal geuploadet: Klicke hier!


Mein bisheriger Versuch, Anstatt:

Code:
if(eregi("(wmv|mp3|rar|zip|exe|txt|doc|htm|html|dem)$",$name)) {

das hier: ->
Code:
if(eregi("(wmv|mp3|rar|zip|exe|txt|doc|htm|html|dem)$",$name) && !strpos ($dateiname, ".php") && !strpos ($dateiname, ".phtml")) {

Funktioniert aber nicht ..

Hoffe auf schnelle Hilfe,

Grüsse,
Takedown
Das Problem ist folgendes. Du fragst, ob die Datei die Endung .exe, .htm etc. hat, dies ist aber nicht 100% sicher das die Datei auch dem entsprechenden Typ entspricht. Die du schon sagtest kann man eine .php Datei auch schmücken mit .php.jpg und schon klappts. Man muss also nicht die Endung überprüfen sondern den Typ.
PHP-Code:
$type $bild_type// Der MIME Type der Datei 
Wenn das Script abgeschickt wurde, steht derzeitig in der Variable $type der Typ drinnen. Du musst diese Variable verwenden um zu prüfen, ob es sich um eine erlaubte Datei handelt. Der Typ heißt aber nicht genauso wie die Endung. Bei jpg Bildern lautet der Type "image/pjpeg".

Es müsste also so aussehen:
PHP-Code:
if(eregi("(image/pjpeg|image/gif)$",$type)) 

Wie alle Typen genau heißen weiß ich nicht, dass muss man dann mal ausprobieren.

NACHTRAG: Schau mal hier, hier sind alle MIME Typen aufgelistet. http://de.selfhtml.org/diverses/mimetypen.htm
Zitat:Original von Virus
Das Problem ist folgendes. Du fragst, ob die Datei die Endung .exe, .htm etc. hat, dies ist aber nicht 100% sicher das die Datei auch dem entsprechenden Typ entspricht. Die du schon sagtest kann man eine .php Datei auch schmücken mit .php.jpg und schon klappts. Man muss also nicht die Endung überprüfen sondern den Typ.
PHP-Code:
$type $bild_type// Der MIME Type der Datei 
Wenn das Script abgeschickt wurde, steht derzeitig in der Variable $type der Typ drinnen. Du musst diese Variable verwenden um zu prüfen, ob es sich um eine erlaubte Datei handelt. Der Typ heißt aber nicht genauso wie die Endung. Bei jpg Bildern lautet der Type "image/pjpeg".

Es müsste also so aussehen:
PHP-Code:
if(eregi("(image/pjpeg|image/gif)$",$type)) 

Wie alle Typen genau heißen weiß ich nicht, dass muss man dann mal ausprobieren.

NACHTRAG: Schau mal hier, hier sind alle MIME Typen aufgelistet. http://de.selfhtml.org/diverses/mimetypen.htm

Habs mal versucht einzubauen, kommt jetzt aber ein Error o0'

Parse error: syntax error, unexpected '<' in /www/htdocs/w0055c8c/upload/imageupload/upload.php on line 15
In Zeile 15 befindet sich ein < was da nicht hingehört.
Zitat:Original von Virus
In Zeile 15 befindet sich ein < was da nicht hingehört.

Hier der Code aus Zeile 15:

Code:
<?php if(eregi("(image/pjpeg|image/gif)$",$type)) ?>
<?php und ?> in dieser Zeile löschen. War nur zur Veranschaulichung gedacht.

Denke aber daran, mit der Zeile 15 werden nur gif-Bilder und jpg-Bilder zugelassen.
Zitat:Original von Virus
<?php und ?> in dieser Zeile löschen. War nur zur Veranschaulichung gedacht.

Denke aber daran, mit der Zeile 15 werden nur gif-Bilder und jpg-Bilder zugelassen.

und wenn ich nur .php-dateien welassen möchte, muss es doch ndann so aussehen, oder?

Code:
if(eregi("(file/php)$",$type))

Aber werden dann auch Files wie .php.rar unterbunden?


Thx & grüsse,
Take
Wie gesagt, der Mime Type heißt nicht genauso wie die Dateiendung. Bei .php Dateien heißt der Mime Type "application/x-httpd-php". Hier werden .php und .phtml Datei eingeschlossen. Wenn du willst, dass php Dateien nicht hochgeladen werden dürfen, so kannst du das so schreiben.
Statt
Code:
if(eregi("(image/pjpeg|image/gif)$",$type))
schreibst du
Code:
if($type != 'application/x-httpd-php')
Das Resultat ist dann, das alle Dateien erlaubt sind außer php Dateien. Wenn du mehrere Dateien verbieten möchtest musst du es so schreiben.
Code:
if(($type != 'application/x-httpd-php') AND ($type != 'application/x-javascript'))
Also immer "AND ($type != 'MIME Type')" anhängen.
@Virus

Hats du ne übersicht über den MiME Type von Datein? Weil das mit dem Type von .php-Datein kann man ja eigentlich nicht normal wissen :-)

MfG
Zitat aus meinem Post vom 29.01.06 um 12:27 Uhr.

Zitat:NACHTRAG: Schau mal hier, hier sind alle MIME Typen aufgelistet. http://de.selfhtml.org/diverses/mimetypen.htm
Seiten: 1 2 3 4
Referenz-URLs