Sicherheit bei Upload.

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

  • Sicherheit bei Upload.

    Werte Forengemeinde.

    Ich möchte meinen Nutzern ermöglichen, Daten in die Weboberfläche zu importieren.

    Dazu habe ich gewählt, dass man die Daten in einem Excelsheet mit einem bestimmten Design vorbereiten muss. Mittels PHP Upload Forum lade ich das Excelsheet hoch in ein Temp File Copiere es dann in ein Unterverzeichnis und lese von dort die Daten dann Zeile für Zeile ein. Worauf muss ich aus sicherheitstechnischen Gründen achten?

    Extension prüfen: Nur .xls Files dürfen hochgeladen werden.
    Jedes Feld das ich auslese zuerst prüfen ob wohl kein PHP Code eingeschleust wird. Sprich <?, $, ´´ Tags entfernen.
    Dem Verzeichnis in den ich das File kopiere muss aber schreibrechte haben.

    Eigentlich müsste das dann sicher sein.

    Ich habe jetzt bei Joomla aber erlebt, dass wenn man dort auf die config.php schreibrechte vergibt – Serverschreibrechte – das diese config.php gehackt wurde.

    Das stimmt mich jetzt etwas nachdenklich und deshalb auch meine Frage an Euch.

    Thx for input

    Teutatis.

  • #2
    Extension prüfen: Nur .xls Files dürfen hochgeladen werden.
    Verlass dich nicht zu sehr auf die Extension. Die kommt vom Client und lässt sich einfach fälschen.
    Ich würde versuchen die xls Datei mittels com zu öffnen und wenn das klappt sollte es wirklich eine xls Datei sein.

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Original geschrieben von jahlives
      Verlass dich nicht zu sehr auf die Extension. Die kommt vom Client und lässt sich einfach fälschen.
      Ich würde versuchen die xls Datei mittels com zu öffnen und wenn das klappt sollte es wirklich eine xls Datei sein.
      Hallo Tobi

      Danke für den Tipp und auch gleich der richtige href dabei

      Kommentar


      • #4
        Thread Verschoben

        Sorry das mein Thread verschoben werden musste.

        Es ist nur ein aktuelles Problem das ich habe, dass ich meinen Upload absichern muss, deshalb dachte ich es ist im PHP "Problem" Forum am besten aufgehoben.

        Teutatis

        Kommentar


        • #5
          warum nicht

          xml oder wenigstens csv? Lässt sich doch deutlich besser validieren.

          Kommentar


          • #6
            Hallo TobiaZ

            Danke für Deinen Input.

            Meine Hauptüberlegung war, dass es für den Benutzer möglichst einfach sein sollte seine Daten ein zu spielen.

            Dazu muss er seine Daten in eine bestimmte Ordnung bringen. Das ist natürlich im Excel am einfachsten, da jeder mit einem Computerführerschein mit Excel umgehen kann. Natürlich könnte man von hier jetzt XML export machen aber für mich macht es so weit keinen Unterschied.

            Mit

            PHP-Code:
            $data->sheets[0][1
            gehe ich jede Spalte durch und hol mir den Inhalt der dort steht.
            Nicht anders als würde ich durch XML parsen um mir die Infos zwischen den <NAME> </NAME> Tags zu holen.

            cheers


            Teutatis

            Kommentar


            • #7
              das mit den Extensions prüfen sollte sein, reicht aber nicht. Ich kann ja einfach ne phpdatei machen und als endung xls nehmen, die würde dann bei dir hochgeladen werden.

              prüfe zusätzlich den mimetype, der ist bei xls dateien "application/vnd.ms-excel"

              Kommentar


              • #8
                rüfe zusätzlich den mimetype, der ist bei xls dateien "application/vnd.ms-excel"
                Du bist dir aber bewusst, dass auch diese Info vom Client kommt und daher einfach gefälscht werden kann ?
                Möglichst grosse Sicherheit haste dann wenn du das File serverseitig prüfst. Für Bilder z.B. mit getimagesize(). Wenn dann die Fkt einen Fehler wirft kannst du ziemlich sicher sein, dass die Extension gefaket wurde

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  ...PHP-Code in einer Excel-Tabelle dürfte noch das kleinste Problem sein (Wann soll der ausgeführt werden?). Die wirkliche Gefahr sind eher Makros - darauf beim Öffnen achten.

                  Kommentar


                  • #10
                    Original geschrieben von pekka
                    Die wirkliche Gefahr sind eher Makros - darauf beim Öffnen achten.
                    Wenn er die Dateien mit COM öffnet, um die Daten heraus zu holen, braucht er sich vor Makros nicht fürchten. Nur wenn er hochgeladene Dateien wieder zum Download anbietet ...

                    Kommentar


                    • #11
                      Original geschrieben von onemorenerd
                      Wenn er die Dateien mit COM öffnet, um die Daten heraus zu holen, braucht er sich vor Makros nicht fürchten. Nur wenn er hochgeladene Dateien wieder zum Download anbietet ...
                      Aah, Startpost nicht genau gelesen. Ja stimmt.

                      Kommentar

                      Lädt...
                      X