1unitedpower: Wiki: Dateiupload mit PHP

Beitrag lesen

problematische Seite

move_uploaded_file() gehört mMn schon lange auf die depricated-Liste. Es ist noch entstanden zur Zeit der unsicheren globalen Arrays. Mit der Einführung von $_FILES wurde aber der temporäre Name des hochgeladenen Files abgesichert. Damit wurde die Sicherheitslücke, die move_uploaded_file() vorher schließen sollte, beseitigt.

Von welcher Sicherheitslücke sprichst du? Das Upload-Verzeichnis dient gewissermaßen als Sandbox: die Datei wird erstmal an eine Stelle geschoben, an der sie nicht viel Schaden anrichten kann. Es ist dann Aufgabe der Anwendung die Datei zu überprüfen (bspw. auf Mime-Type oder Viren) bevor sie aus der Sandbox an eine andere Stelle verschoben wird. Die normalen PHP Dateisystem-Funktionen haben ggf. keinen Zugriff auf das Upload-Verzeichnis, wenn es außerhalb des open_basedir-Verzeichnisbaums liegt. Deshalb braucht man move_uploaded_file als privilegierte Funktion.

Daher ist die von mir vorgestellte Funktion save_uploaded_file() auf jeden Fall zielführender. Sie ermöglicht das TOCTTOU-freie Speichern von Dateien mit Statusrückmeldung

Ich habe gerade im PHP Sourcecode nachgesehen, move_uploaded_file benutzt unter der Haube auch den Filelock-Mechanismus. Man muss ein bisschen graben bis man auf diese beiden Zeilen stößt:

srcstream = php_stream_open_wrapper_ex(src, "rb", src_flg | REPORT_ERRORS, NULL, ctx)

deststream = php_stream_open_wrapper_ex(dest, "wb", REPORT_ERRORS, NULL, ctx);

Der zweite Parameter ist der File-Mode.

und insbesondere erspart sie beim Zusammenwirken mit Datenbanken an dieser Stelle wieder Overhead. •••

Wie das?

3 52

Wiki: Dateiupload mit PHP

Julius
  • php
  • selfhtml-wiki
  • sicherheit
  1. 0
    dedlfix
    1. 0
      Matthias Scharwies
      1. 2
        Julius
    2. 3
      Julius
      1. 1
        TS
        1. 0
          1unitedpower
          1. 1
            Julius
            1. 0
              1unitedpower
              1. 0
                TS
                1. 0
                  1unitedpower
          2. 0
            robertroth
            1. 3
              Raketenquellsuchsystem
              1. 0

                Wiki: Dateiupload mit PHP (Verständlichere Ergänzung)

                Raketenquellsuchsystem
              2. 2
                robertroth
                1. 0
                  Raketenquellsuchsystem
                2. 1
                  Rolf B
          3. 1
            TS
            1. 0
              1unitedpower
              1. 1
                TS
                1. 0
                  1unitedpower
                2. 1
                  robertroth
                  • idee
                  • php
                  • sicherheit
            2. 1
              Julius
              1. 2
                TS
                1. 2
                  Julius
                  1. 0
                    TS
            3. -1
              Raketenstarter
              1. -1
                Raketenstarter
      2. 0
        dedlfix
  2. 1
    Gunnar Bittersmann
    • grafik
    • grafik
    • selfhtml-wiki
    1. 0
      Der Martin
      1. 0

        webp-Konverter <.->

        Raketenwilli
        1. 0
          Der Martin
          • grafik
          • grafik
          1. 0
            Raketenwilli
            • produktinfo
            1. 0
              Der Martin
              • humor
              • produktinfo
          2. 0
            Raketenwilli
    2. 2
      dedlfix
  3. 2
    Matthias Apsel
    1. 2
      Julius
  4. 2
    Felix Riesterer
    1. 4
      Julius
  5. 0
    1unitedpower
    1. 1
      Julius
  6. 2
    Julius
    1. 0
      TS
      1. 1
        Julius
        1. 0
          TS
          1. 0
            Tabellenkalk
            1. 0
              TS
              1. 0
                raketenquelltextleser
                1. 1
                  Julius
                  • php
                  • sicherheit
              2. 1
                Julius