Sven Rautenberg: Sicherheit beim Upload

Beitrag lesen

Moin!

Das Szenario, dass ein böser Angreifer die hochgeladene Datei noch vor ihrer Verschiebung verändert, wird durch die Nutzung von $_FILES nicht ausgeschlossen.

Genau. Endlich hast Du es verstanden. Weder $_FILES, noch *_uploaded_file() garantieren, dass das File _nicht_ manipuliert wurde.

$_FILES & File-Handle-Funktionen ist daher in der Lage, _mehr_ "Sicherheit" zu liefern, als move_uploaded_file(), das bekanntermaßen vorhandene Files noch überschreibt.

Indem du alles in einem Topf wirfst und durchrührst, erzeugst du zwar eventuell Verwirrung, aber klare und logische Argumentation sieht anders aus.

Die Anfälligkeit von hochgeladenen Dateien in einem userübergreifenden TMP-Verzeichnis für Manipulationen hat absolut nichts mit dem durch PHP zu vollziehenden Verschieben der Datei an ihren finalen Platz zu tun.

Warum hast du plötzlich dieses Argument an den Haaren herbeigezogen? Das Problem ist durch passende Konfiguration zu lösen.

Insofern hat dieses Szenario keinerlei Einfluss auf die Entscheidung, ob move_uploaded_file() obsolet ist, oder nicht, weil die von dir vorgeschlagene Alternative dasselbe Problem hat.

Das sehe ich anders. Move_uploaded_file() suggeriert eine Sicherheit, die es nicht leistet und hat zudem auch noch handwerkliche Fehler (Überschreiben...)

Wenn du alle möglichen Sicherheitsszenarien an den Haaren herbeiziehst und jeweils ohne eigene Argumentation, sondern durch Gedankenübertragung (Zitat Tom: "Bitte nachdenken."), versuchst, dass das Publikum selbst die Sicherheitslücke erkennt, die du angeblich siehst, dann halte ich das für keine seriöse Argumentationsmethode.

Fassen wir nochmal zusammen:

move_uploaded_file() garantiert, dass nur wirklich hochgeladene Dateien verschoben werden. Wenn die Zieldatei bereits existiert, wird sie dabei überschrieben. Es ist möglich, mit weiterem Code um move_uploaded_file() herum auch eine Absicherung gegen dieses Überschreiben zu programmieren.

Der Zugriff auf $_FILES allein garantiert NICHT, dass nur wirklich hochgeladene Dateien verschoben werden. Es ist möglich, mit weiterem Code eine Absicherung gegen Überschreiben zu programmieren.

Und trotzdem propagierst du weiterhin, move_uploaded_file() wäre obsolet? Du hast immer noch keinen PHP-Code geliefert, der in deinem Killerszenario für jeden möglichen Anwendungsfall von move_uploaded_file() die Überlegenheit von $_FILES darlegt und deshalb die Obsoleterklärung beweist.

Nur weil eine Funktion nicht in allen Fällen benutzt wird, bedeutet das noch lange nicht, dass sie obsolet ist. Du benutzt ja auch nicht überall strtr(), trotzdem ist sie nicht obsolet.

- Sven Rautenberg

0 133

Sicherheit beim Upload

Nelly
  • php
  1. 0
    Tom
    1. 1
      ChrisB
      1. 0
        Tom
        1. 0
          ChrisB
          1. 0

            $_FILES[<name>]['tmp_name']

            Tom
            • menschelei
            1. 0
              ChrisB
              1. 0
                Tom
                1. 0
                  ChrisB
                  1. 0

                    Dateiupload, was tut move_uploaded_file() wirklich?

                    Tom
                    • php
                    1. 0
                      ChrisB
                      1. 0

                        Rumpaulerei

                        Tom
                        • menschelei
                        1. 0
                          ChrisB
                          1. 0

                            Gültigkeit von Funktionen für den Dateiupload

                            Tom
                            • php
                            1. 0
                              Auge
                              1. 0
                                Tom
                                1. 0
                                  ChrisB
                                  1. 0
                                    Tom
                                    1. 0
                                      ChrisB
                                      1. 0
                                        Tom
                                        1. 0
                                          ChrisB
                                          1. 0
                                            Tom
                                            1. 0
                                              ChrisB
                                              1. 0
                                                Tom
                                                1. 0
                                                  Matti Mäkitalo
                                                  1. 0
                                                    Kai345
                                                    1. 0
                                                      Christian Kruse
                                                  2. 0
                                                    Tom
                                                    1. 0
                                                      Multi
                                    2. 0
                                      Multi
                                      1. 0
                                        Tom
                            2. 0
                              ChrisB
                              1. 0
                                Tom
                            3. 1
                              ChrisB
                              1. 0
                                Tom
                                1. 0
                                  ChrisB
                                  1. 0
                                    Tom
                                    1. 0
                                      ChrisB
                                      1. 0
                                        Tom
                                        1. 0
                                          ChrisB
                    2. 0
                      Christian Kruse
                      1. 0
                        Tom
                        1. 0
                          Christian Kruse
                          1. 0
                            Tom
                2. 1
                  dedlfix
                  • php
                3. 4
                  Matti Mäkitalo
                  1. 0

                    Der Wert von alten PHP-Funktionen

                    Tom
                    • php
            2. 0

              Das geht auch anständiger!

              Der Martin
              • zu diesem forum
              1. 0
                Tom
                1. 1
                  ChrisB
              2. 0
                Gunnar Bittersmann
    2. 0
      Sven Rautenberg
      1. 0
        Tom
        1. 0
          ChrisB
        2. 7
          Sven Rautenberg
          1. 1
            Matti Mäkitalo
            1. 0
              dedlfix
            2. 0
              Tom
              1. 0
                Sven Rautenberg
                1. 0
                  Christian Kruse
                  1. 0
                    Sven Rautenberg
                    1. 0
                      Tom
                  2. 0
                    Tom
          2. 0
            Tom
            1. 0
              ChrisB
              1. 0
                Tom
                1. 0
                  ChrisB
                2. 2
                  Multi
                  1. 0
                    Tom
                    1. 2
                      Multi
                3. 0
                  Der Martin
                  1. 0
                    Tom
                    1. 0
                      ChrisB
            2. 3
              Sven Rautenberg
            3. 3
              dedlfix
              1. 2
                Multi
                1. 0
                  Tom
                  1. 0
                    Matti Mäkitalo
                    1. 0
                      Tom
                      1. 0
                        ChrisB
                        1. -1
                          Christian Kruse
                          1. 0
                            Sven Rautenberg
                            1. 0
                              Christian Kruse
                          2. 0
                            dedlfix
                            1. 0
                              Sven Rautenberg
                              1. 0
                                dedlfix
                                1. 0
                                  Christian Kruse
                                  1. 0
                                    dedlfix
                                    1. 0
                                      Sven Rautenberg
                                      1. 0
                                        dedlfix
                                      2. 2
                                        Christian Kruse
                                        1. 0
                                          Sven Rautenberg
                                        2. 0
                                          Tom
                                          1. 0
                                            Sven Rautenberg
                                            1. 0
                                              Tom
                                              1. 0
                                                dedlfix
                                                1. 0
                                                  Tom
                                                  1. 1
                                                    Sven Rautenberg
                                                    1. 0
                                                      Tom
                                                      1. 0
                                                        ChrisB
                                                      2. 3
                                                        Sven Rautenberg
                                                  2. 0
                                                    dedlfix
                                                    1. 0
                                                      Tom
                                                      1. 2
                                                        ChrisB
                                                      2. 3
                                                        Sven Rautenberg
                                                        1. 0
                                                          Tom
                                                          1. 0
                                                            Matti Mäkitalo
                                                            1. 0
                                                              Tom
                                                          2. 0
                                                            Sven Rautenberg
                      2. 2
                        Multi
                      3. 3
                        Christopher
    3. 0

      Alle OOP-Konzepte, die ich bisher kennengelernt habe...

      Mitleser
      • meinung
    4. 0
      Multi
      1. 0
        Tom
        1. 0

          Sicherheit beim Upload, Ergänzung zu open_basedir

          Tom
        2. 1
          ChrisB
        3. 0
          Multi
          1. 0
            dedlfix
            1. 0
              Tom
              1. 0
                dedlfix
                1. 0
                  Tom
                  1. 0
                    dedlfix
                    1. 0
                      Tom
                      1. 0
                        dedlfix
                        1. 0
                          Tom
                          1. 0
                            dedlfix
                            1. 0
                              dedlfix
                              1. 0
                                Tom
                          2. 0
                            Mitleser
        4. 1
          Multi
  2. 1
    dedlfix
    1. 0
      molily
  3. 0
    Multi