Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Datei-Upload - Sicherheit?

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Datei-Upload - Sicherheit?

    Hallo zusammen,

    ich habe folgendes Problem und wäre für Hilfe dankbar.

    Für einen Datei-Upload habe ich mir folgendes Verfahren überlegt:

    PHP-Code:
    move_uploaded_file($_FILES['datei']['tmp_name'], "upload/".$_FILES['datei']['name']."".txt"); 
    Heißt beim Upload einer Datei, wird diese als Text-Datei gespeichert. Ich habe das für die sicherste Lösung gehalten, um potentielle Angriffe abzuwehren. Heißt wenn jemand eine schädliche Datei hochlädt, wird diese ausser gefecht gesetzt, da ich sie in .txt umwandle.

    Bisher dachte ich, ich kann die Dateien dann runterladen, das .txt entfernen und sie lassen sich dann behandeln wie ursprünglich. Problem: Das klappt nicht.

    Wenn ich beispielsweise eine .zip hoch lade, wird dieses als .zip.txt auf dem Server gespeichert. Beim herunterladen entferne ich das .txt, doch die Datei ist beschädigt und lässt sich nicht mehr öffnen.

    Was mache ich falsch? Weiß einer wo das Problem liegt? Wie kann man den sonst noch schädliche Datein abfangen?

    Vielen Dank!

  • #2
    Zitat von Elefterios Beitrag anzeigen
    Wenn ich beispielsweise eine .zip hoch lade, wird dieses als .zip.txt auf dem Server gespeichert. Beim herunterladen entferne ich das .txt, doch die Datei ist beschädigt und lässt sich nicht mehr öffnen.
    Das kann man an der einen Zeile Code aber leider nicht erkennen..
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      PHP-Code:
      ."".txt"); 
      müsste es nicht

      PHP-Code:
      .".txt"); 
      sein?

      Kommentar


      • #4
        Ja richtig

        PHP-Code:
        move_uploaded_file($_FILES['datei']['tmp_name'], "upload/".$_FILES['datei']['name'].".txt"); 
        Aber das ist nicht das Problem, das als .txt speichern klappt ja.

        Kommentar


        • #5
          Soll ich mich zur Sicherheit nochmal selber zitieren?

          Die eine Zeile Code steht in keiner Relation zum Problem... zeig
          - Das HTML Formular für den Upload
          - den (vollständigen) PHP Code, der den Upload verarbeitet (check, move, rename, delete, ...)
          - den (vollständigen) PHP Code, der die Datei wieder zum Download anbietet bzw. ausliefert
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            Formular:

            PHP-Code:
            <form action="/upload.php" method="post" enctype="multipart/form-data">
            <
            input type="file" name="file"><br>
            <
            input type="submit" value="Hochladen">
            </
            form
            upload.php

            PHP-Code:
            <?php

                    move_uploaded_file
            ($_FILES['file']['tmp_name'], "upload/" $_FILES['file']['name'] . ".txt");

                    echo 
            "<p>Upload der Datei " $_FILES['file']['name'] . " erfolgreich!</p>";

            Kommentar


            • #7
              Formular:

              PHP-Code:
              <form action="/upload.php" method="post" enctype="multipart/form-data">
              <
              input type="file" name="file"><br>
              <
              input type="submit" value="Hochladen">
              </
              form
              upload.php

              PHP-Code:
              <?php

                      move_uploaded_file
              ($_FILES['file']['tmp_name'], "upload/" $_FILES['file']['name'] . ".txt");

                      echo 
              "<p>Upload der Datei " $_FILES['file']['name'] . " erfolgreich!</p>";
              download.php gibt es nicht

              Kommentar


              • #8
                Woher kommt die Datei dann beim Download?
                Zitat von Elefterios Beitrag anzeigen
                Beim herunterladen entferne ich das .txt, doch die Datei ist beschädigt und lässt sich nicht mehr öffnen.
                Du hast Null Fehlerbehandlung im Script. Setz an den Anfang der upload.php die Zeilen:
                PHP-Code:
                error_reporting(-1);
                ini_set('display_errors'1); 
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #9
                  Ich lade die Dateien direkt über FTP runter.

                  Den Code habe ich eingefügt.

                  Kommentar


                  • #10
                    Wie wärs wenn du dir einfach ein anderes Sicherheitskonzept überlegst als einfach .txt als Dateiendung anzuhängen? .htaccess z.B.?
                    Deine Lösung erscheint mir nicht wirklich gut...
                    Programming today is a race between developers striving to build better idiot-proof programs, and the universe trying to produce better idiots. So far, the universe is winning.

                    Kommentar


                    • #11
                      Zitat von Elefterios Beitrag anzeigen
                      Ich lade die Dateien direkt über FTP runter.
                      Und dabei wird vermutlich dein FTP-Programm auf Grund der Dateiendung .txt automatisch ASCII als Transfermodus wählen,
                      damit werden die unterschiedlichen Zeilenumbruchformate zwischen den unterschiedlichen Betriebssystemen automatisch konvertiert,
                      und damit hast du Datenmüll, weil zip- nun mal keine Textdateien sind.

                      Den Transfermodus explizit auf Binär zu stellen, dürfte dieses „Problem“ also ziemlich sicher lösen;
                      daran, dass das Verfahren an sich nicht viel taugt, wie andere Poster schon anmerkten, ändert es natürlich wenig.
                      [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                      Kommentar


                      • #12
                        Ok, das war das Problem danke.

                        Wenn ich direkt einen Download-Link generieren lassen und dann herunterlade klappt es.

                        Danke!

                        Kommentar

                        Lädt...
                        X