Überprüfen ob swf hochgeladen wurde

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ü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 

    Kommentar


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

      Kommentar


      • #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"
        Zuletzt geändert von konSumi; 26.03.2008, 22:05.
        Flashtuts - Flash Tutorials und Downloads für alle Versionen
        psdtuts - Photoshop Tutorials, Galerie, Battles

        Kommentar


        • #5
          Stichwort: (lib)ming

          Kommentar


          • #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!

            Kommentar

            Lädt...
            X