dedlfix: Sicherheit beim Upload

Beitrag lesen

Hi!

Das Konzept ist solange gefährlich, wie die aufrufende Instanz nicht wirklich die kontrollierende ist. In einer Interprreter-Sprache ist dies ja meistens das übergeordnete Runtime-Modul.

Das Runtime-Modul bekommt seine Informationen von einem Script. Und das will sich wiederum anderen Code unterordnen. Die Herausforderung dabei ist, dass die Ausführung des dem Script untergeordneten Codes in Form von Funktionsaufrufen zu jeder beliebigen Zeit erfolgen kann und nicht nur im Rahmen von eval() oder eines (besonderen) include.

Ich denke aber, dass man bei PHP in der prozeduralen Ebene schon relativ leicht eine solche hierarchische Kontrolle einführen könnte.

Das denke ich nicht, und das hab ich im vorigen Posting schon dargelegt. Du kannst nicht einfach nur eval() oder dein spezielles include absichern wollen. Du müsstest jeden Funktionsaufruf kontrollieren, ob die aufgerufene Funktion aus dem inkludierten Code kommt oder von einer solchen aufgerufen wurde. Neben einem bei jedem Funktionsstart könnte ich mir nur noch vorstellen, den Code in eine Sandbox zu inkludieren und bei der Ausführung entweder in der Sandbox zu sein (auch für alle weiteren Aufrufe von Funktionen, die außerhalb der Sandbox definiert sind aber aus Sandbox-Code aufgerufen werden). Dann hätte man jedoch zwei unterschiedliche Scopes und auch zu entscheiden, welche globale und vor allem superglobale Variablen man der Sandbox zur Verfügung stellt. Wobei - das Problem mit den Variablen hat man auch in der Variante, dass jeder Funktionsaufruf selbst testet.

Das ist jedenfalls ein Haufen Aufwand, und ich bin mir nicht sicher, dass der Aufwand den zu erwartenden Nutzen rechtfertigt. Mit wesentlich weniger Aufwand könnte man das vielleicht sogar heute schon ein vielleicht gleichwertiges Ergebnis erzielen, indem man seine sämtlichen Variablen nicht global rumliegen lässt und die superglobalen einmalig am Scriptanfang ausliest und dann nie wieder darauf zugreift (höchstens auf $_SESSION am Ende schreibend). Dann kann da auch jede drinrumschreiben, ohne dass es den Rest des Programms stört. Allerdings hat die Sache auch wieder einen Haken, denn man will den Plugins ja sicher auch Daten übergeben und von ihnen in Empfang nehmen und macht sich damit gezwungenermaßen Löcher in die Isolierung.

OOP in einer Interpretersprache (ausgenommen die intern benutzte) halte ich ja sowieso für fragwürdig - aber das wisst Ihr ja schon alle :-)

Du kannst aufhören, das Stichwort OOP ins Spiel bringen zu wollen. Die OOP hat für dein Szenario keinerlei Extrastellung und muss sich in das dafür zu entwerfende Konzept einfügen.

Lo!

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