Überprüfen ob swf hochgeladen wurde

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Überprüfen ob swf hochgeladen wurde

    Hi,
    ich habe ein Upload Feld. Hier soll es lediglich erlaubt sein .swf Dateien hochzuladen. Wie kann ich dieses Feld validieren?

    Mein Ansatz:
    1) Dateiendung überprüfen
    2) $_FILES['uploadfeld']['type'] == "application/x-shockwave-flash"

    Problem:
    Sowohl die Dateiendung als auch der type kann ja vom Client beeinflusst werden. Bei einem image könnte man noch per getimagesize() weitere Überprüfung durchführen, aber bei einem swf (in der aktuellen Version) geht das ja nicht.

    Frage:
    Wie kann ich sicherstellen, dass wirklich ein swf hochgeladen wurde oder reichen o.g. Überprüfungen aus?
    Flashtuts - Flash Tutorials und Downloads für alle Versionen
    psdtuts - Photoshop Tutorials, Galerie, Battles

  • #2
    Hi,

    du kannst per substring die letzten drei Zeichen der hochgeladenen Datei filtern um zu überprüfen ob es swf ist.

    Beispiel:

    PHP Code:
    $file $_FILES['file']['name'];
    $laenge_file strlen($file); //Dateiname länge ermitteln
    $ende_file $laenge_file 4// komplette länge - 4, wird benötig um gerade .swf rauszubekommen
    $datei_typ substr($file$ende_file$laenge_file); //das ganze wird dann hier drin gespeichert 

    Comment


    • #3
      http://docs.php.net/fileinfo
      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

      Comment


      • #4
        @Blitzschlag: Das werde ich auf jedenfall machen, habe ich ja in 1. geschrieben.

        @tontechniker: Wie genau ist das anzuwenden?
        habe diese Funktion gefunden:
        PHP Code:
        function mime_content_type($filename) {
                
        $finfo    finfo_open(FILEINFO_MIME);
                
        $mimetype finfo_file($finfo$filename);
                
        finfo_close($finfo);
                return 
        $mimetype;
            } 
        so wie ich das sehe steht also die Konstante FILEINFO_MIME erst zur Verfügung wenn das Package installiert ist?!

        was wäre jetzt der Vorteil wenn ich diese Funktion benutze gegenüber der Überprüfung mittels $_FILES['uploadfeld']['type'] == "application/x-shockwave-flash"
        Last edited by konSumi; 26-03-2008, 21:05.
        Flashtuts - Flash Tutorials und Downloads für alle Versionen
        psdtuts - Photoshop Tutorials, Galerie, Battles

        Comment


        • #5
          Stichwort: (lib)ming

          Comment


          • #6
            Auch ne mögliche Variante:

            PHP Code:
            echo exec("file -bi ".escapeshellarg($f)); 
            Vorteil:
            Der Uploadende Client könnte die Angabe faken (Never trust incoming Data).

            Die Dateiendung zu faken ist sowieso das einfachste was es nur gibt.

            Die anderen Varianten versuchen halt anhand des tatsächlichen Datei-Inhaltes den Dateityp zu ermitteln - das gibt schon etwas mehr Sicherheit als nur Prüfung auf die Endung im Dateinamen oder einfach blind der Info im $_FILES-Array zu vertrauen.
            Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
            Schön - etwas Geschichte kann ja nicht schaden.
            Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

            Comment

            Working...
            X