Portal > Foren > PHP > PHP-Programmierung > Kontrolle ob Zip-Datei?
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 05.02.2007, 16:23 Nach oben    #1
...möp...
 
Benutzerbild von Creativ
 
Registriert seit: 10.10.2005
Ort: Wolfsburg
Beiträge: 79
Standard Kontrolle ob Zip-Datei?

Hi,
ich bin gerade dabei einen Upload zu machen, bei den man Zip-Dateien hochladen können soll.
Ich weiß jetzt nur nicht wie ich sicher sein kann, dass es auch wirklich eine Zip-Datei ist.

Ich habe es zuerst mit dem Mime-Type versucht, das geht auch so weit.

Nur kann man das umgehen, indem man eine beliebige datei nur die Endung .zip gibt, und schon kann man die ohne Probleme hochladen, da der Mime-Typ wie bei einer normalen Zip datei ist.

Wie kann ich also wirklich kontrollieren, ob es eine Zip-Datei ist? Gibt es da irgendeine Funktion um das zu kontrollieren?

Danke schonmal,
Dennis
Creativ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.02.2007, 16:33 Nach oben    #2
 
Registriert seit: 10.11.2005
Ort: Schweiz -> Basel
Beiträge: 211
Standard

Auf die Signatur prüfen?

Code:
Signature 	4 (DWORD) 	Dieser Wert ist immer 0x04034B50 (Hex).
Quelle: http://www.scherfgen-software.net/in...ials&topic=zip
think ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.02.2007, 16:37 Nach oben    #3
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Eventuell kannst du auch die ZIP-Funktionen von PHP nutzen (müssten aber nachinstalliert werden, sofern sie nicht vorhanden sind
http://de.php.net/manual/en/ref.zip.php

think's Methode find ich eigentlich recht elegant.
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.02.2007, 16:53 Nach oben    #4
...möp...
 
Benutzerbild von Creativ
 
Registriert seit: 10.10.2005
Ort: Wolfsburg
Beiträge: 79
Standard

Danke schonmal für eure Vorschläge.
Hört sich gut an, nur weiß ich nicht wie ich jetzt die Signatur der Datei auslesen kann.

Bei Google habe ich nichts gefunden
Creativ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.02.2007, 22:05 Nach oben    #5
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 306
Standard

Weiter unten auf der Seite hat es ein Beispiel. Ist zwar C aber grundsätzlich kann man das in PHP auch so umsetzen.
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.02.2007, 09:58 Nach oben    #6
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Hm, ich hab das jetzt nicht nachgeschaut, aber steht das nicht auch im $_FILES-Array drin? Müsste man halt noch irgendwie absichern, dass die Daten auch stimmen
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.02.2007, 11:31 Nach oben    #7
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 597
Standard

In phpMyAdmin gibt es eine unzip.lib.php.
Vielleicht hilft das weiter, um diverse Informationen aus dem ZIP-Header zu bekommen, und somit zu prüfen, ob es auch wirklich eine ZIP-Datei ist.
CIX88 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.02.2007, 14:31 Nach oben    #8
Dejan Spasic
 
Benutzerbild von dejan_spasic
 
Registriert seit: 05.01.2006
Ort: Düsseldorf
Beiträge: 169
Standard

Zitat:
Zitat von Ben Beitrag anzeigen
Hm, ich hab das jetzt nicht nachgeschaut, aber steht das nicht auch im $_FILES-Array drin? Müsste man halt noch irgendwie absichern, dass die Daten auch stimmen
Dieser Wert kann ebenfalls vom Client manipuliert werden. Denn letztenendes
sind die Inormationen im Request-Header, die vom Borwser gesendet werden,
drinne.

Vieleicht kann das MIME_Type Package von PEAR helfen. Oder auch die
Fileinfo funktionen, die allerdings expliziet über pecl (nach)installiert werden
müssten. Es gibt noch mime_content_type, dass aber ab php6 nicht mehr
unterstützt wird.
__________________
Da wir alle in einem Boot sitzen, ist es gut, dass wir nicht alle auf einer Seite stehen... (mir unbekannt)
dejan_spasic ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.02.2007, 19:58 Nach oben    #9
...möp...
 
Benutzerbild von Creativ
 
Registriert seit: 10.10.2005
Ort: Wolfsburg
Beiträge: 79
Standard

Hi,
Die Fileinfo Funktion sieht schonmal gut und einfach aus.
Aber ist die funktion auch sicher? Also kann man die nicht irgendwie austricksen?

Ansonsten habe ich noch versucht das erste Beispiel in C zu PHP umzusetzen.
Aber da bin ich an der stelle gescheitert:
ZipHeader Header;
Weiß nicht wie ich das mit der variable und wie die im code genutzt wird in php machen soll.


Dennis
Creativ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.02.2007, 20:35 Nach oben    #10
Erfahrener Benutzer
 
Registriert seit: 12.06.2006
Beiträge: 207
Standard

Wenn du was gefunden hast, was a) funktioniert und b) keine extra-Software à la PECL erfordert, kannste das dann hier posten?

Oder kann jemand mal versuchen, den C/++-Ansatz mit der Signatur von oben in PHP umzusetzen? Kann selber kein C/++.
Ich hab mal ne ZIP-Datei im HexEditor angeschaut, konnte aber diese Bytefolge nirgendwo finden ...
FloB ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.02.2007, 21:43 Nach oben    #11
Dejan Spasic
 
Benutzerbild von dejan_spasic
 
Registriert seit: 05.01.2006
Ort: Düsseldorf
Beiträge: 169
Standard

Fileinfo habe ich persönlich nicht getestet gehabt, somit kann ich nicht sagen
wie zuverlässig die Funktionen sind.

Auf die Frage ob man es austricksen kann... ich denke schon. Denn es wird an
einer bestimmte Stelle nach einem bestimmten Muster/Signatur
nachgeschaut. Vor und nach der Signatur muss ja nicht unbeding der zu
erwartende Ihnalt sein. Die Frage ist aber, wie kann so eine "falsche" Datei
Schaden anrichten. Das hängt von verschiedenen Faktoren ab... wie z.B. wenn
die Datei ein PHP-Skript beinhaltet und foo.zip lautet, könnte es zu einer
Gefahr kommen wenn:
  • das Skript expliziet über die Konsole ausgeführt wird (php foo.zip)
  • der Apache HTTP-Server so Konfiguriert ist, dass die Dateien mit der
    Endung *.zip durch den PHP Interpreter gejagt werden sollen (AddType
    application/x-httpd-php .zip)
  • die Datei in PHP-Skript mit include eingebunden wird <?php include
    "foo.zip" ?>

Wie dem auch sei, der folgende Verweis ist ein nachgebaute
mime_content_type funktion.
http://www.pberndt.com/Web/PHP/Codes...MIME%20Typ.php
Die benötigte magic.mime habe ich als anhang beigelegt, diese ist aber auch
bei Apache HTTP-Server dabei.
Angehängte Dateien
Dateityp: zip magic.zip (4,5 KB, 0x aufgerufen)
__________________
Da wir alle in einem Boot sitzen, ist es gut, dass wir nicht alle auf einer Seite stehen... (mir unbekannt)
dejan_spasic ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.02.2007, 21:48 Nach oben    #12
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 597
Standard

Zitat:
Oder kann jemand mal versuchen, den C/++-Ansatz mit der Signatur von oben in PHP umzusetzen?
Ich weis gar nicht, warum ich das Beispiel mit unzip.lib.php erwähnt habe ?

PHP-Code:
$in_FileName 'datei.zip';
$len filesize($in_FileName);

$oF fopen($in_FileName'rb'); 
$vZ fread($oF$len ); 
fclose($oF);
$aP unpack('h8PK'$vZ);

print_r($aP); 
CIX88 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.02.2007, 23:41 Nach oben    #13
...möp...
 
Benutzerbild von Creativ
 
Registriert seit: 10.10.2005
Ort: Wolfsburg
Beiträge: 79
Standard

hmm...lol.
Sorry, hatte es irgendwie vergessen.

So könnte ich es natürlich auch machen.
Habe gerade auch noch rausgefunden dass man das auch noch über exec() mit dem hier lösen könnte:
exec("unzip -t datei.zip");

wenn es eine echte zip-datei ist, erhält man "No errors....." als rückgabe.

Danke nochmal!
Creativ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.02.2007, 06:40 Nach oben    #14
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.208
Standard

Zitat:
Zitat von Creativ Beitrag anzeigen
hmm...lol.
Sorry, hatte es irgendwie vergessen.

So könnte ich es natürlich auch machen.
Habe gerade auch noch rausgefunden dass man das auch noch über exec() mit dem hier lösen könnte:
exec("unzip -t datei.zip");

wenn es eine echte zip-datei ist, erhält man "No errors....." als rückgabe.

Danke nochmal!
vorrausgesetzt man darf exec nutzen und hat zugriff auf unzip! was sicher nicht überall der fall ist.
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.02.2007, 11:45 Nach oben    #15
Erfahrener Benutzer
 
Benutzerbild von JumperII
 
Registriert seit: 27.02.2006
Beiträge: 159
Standard

Zitat:
Zitat von robo47 Beitrag anzeigen
vorrausgesetzt man darf exec nutzen und hat zugriff auf unzip! was sicher nicht überall der fall ist.
und Unzip ist sicher

Gruß,
Jumper, the II.
JumperII ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.02.2007, 21:44 Nach oben    #16
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.208
Standard

Zitat:
Zitat von JumperII Beitrag anzeigen
Zitat:
Zitat von robo47 Beitrag anzeigen
vorrausgesetzt man darf exec nutzen und hat zugriff auf unzip! was sicher nicht überall der fall ist.
und Unzip ist sicher

Gruß,
Jumper, the II.
Wie soll ich das verstehen ? Ironie ? bekannte bufferoverflows oder ähnliches ?
robo47 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.02.2007, 15:55 Nach oben    #17
Erfahrener Benutzer
 
Registriert seit: 12.06.2006
Beiträge: 207
Standard

Oha, nich gesehen ... danke!
FloB ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.02.2007, 18:56 Nach oben    #18
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Zitat:
Zitat von robo47 Beitrag anzeigen
bekannte bufferoverflows oder ähnliches ?
Was wirklich Aktuelles, Hilfreiches habe ich jetzt nicht gefunden.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.02.2007, 23:24 Nach oben    #19
Erfahrener Benutzer
 
Benutzerbild von JumperII
 
Registriert seit: 27.02.2006
Beiträge: 159
Standard

Unabhängig davon, ob jetzt aktuell eine Schwachstelle in unzip (oder welches Zip-Programm auch immer) untersucht werden soll, ich persönlich halte es im vorliegenden Fall als nicht sinnvoll, unzip über exec heranzuziehen. Das potentielle Risiko ist zu hoch und für die im Start angedachte Lösung in meinen Augen auch übertrieben (Performance, Zeit). Wenn "nur" kontrolliert werden soll, ob das Zip ein "Zip" ist oder nicht, um einen "einfachen" Missbrauch zu unterbinden, sollte der Magic-Code (die ersten 4 Bytes) ausreichen. Für eine sichere Annahme und Weitergabe ist das Szenario nicht geeignet. Grob skizziert:

Datei entgegen nehmen und in einen Quarantäne-Bereich verschieben. 24 Stunden abwarten, aktuellen Virenscanner drüber jagen, per Unzip (oder anderen geeigneten Programm) komplettes Archive verifizieren. Anschließend zur Freigabe geben. Post-Check (nach 2, 7 und 31 Tagen mit AntiVirus prüfen) nicht vergessen.

Das bietet natürlich keine 100%'ige Sicherheit, jedoch bis auf individuell programmierte Angriffe kann man auf diese Weise durchaus Sicherheit gewinnen.

Gruß,
Jumper, the II.
JumperII ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.02.2007, 12:40 Nach oben    #20
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Danke für die Erläuterung deiner Aussage.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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 sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] FTP-Funktionen in PHP nutzen MrNiceGuy Tutorials 0 24.05.2006 14:18
Passwort Kontrolle Jan PHP-Programmierung 15 19.03.2006 22:06
Mit Applet Datei per ftp uploaden Tago Desktop-Applikationen und Grafik 3 09.09.2005 18:17
Textausgabe in Datei obiwankenobi Allgemeine Java-Programmierung 2 09.05.2005 12:51
Java findet Datei nicht Niki_Tesla Allgemeine Java-Programmierung 14 14.12.2004 22:31


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45