Ankündigung

Einklappen
Keine Ankündigung bisher.

Sicherheitslücken im Download Code

Einklappen

Neue Werbung 2019

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

  • Sicherheitslücken im Download Code

    Moin

    ich habe einen Coder der dafür sorgt, dass dem User (nach ausfüllen eines html Formulares) eine PDF Datei zum Download bereit gestellt wird.
    Ich würde jetzt gerne wissen, wellche Sicherheitsabfragen ich einbauen kann?

    Vielen Dank!

    PHP-Code:
    <?php


    # Besucherzähler
    include 'counter.php';



     
    # Datei auswerten

    $datumaktuell date('Y.m.d H.i.s') .".pdf";

     
    #Anfänger
        
    if($_POST['trainingsstatus'] === "4" or $_POST['alter'] === "1") {
            
    $file "Plaene/anfaenger.pdf";
            
    header("Content-Type: application/pdf");
            
    header("Content-Disposition: attachment; filename=$datumaktuell");
            
    header("Content-Length: "filesize($file));    
        }
     
    #Fortgeschritten
        
    if($_POST['alter'] === "2" and $_POST['trainingsstatus'] === "5") {
            
    $file "Plaene/16bis50.pdf";
            
    header("Content-Type: application/pdf");
            
    header("Content-Disposition: attachment; filename=$datumaktuell");
            
    header("Content-Length: "filesize($file));
        }
        if(
    $_POST['alter'] === "3" and $_POST['trainingsstatus'] === "5") {
            
    $file "Plaene/50plus.pdf";
            
    header("Content-Type: application/pdf");
            
    header("Content-Disposition: attachment; filename=$datumaktuell");
            
    header("Content-Length: "filesize($file));
        }
     
    # Datei ausgeben
        
    readfile($file);

    ?>

  • #2
    Sicherheit... in Bezug auf was? Unberechtigter Zugriff auf andere Dateien?
    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

    Kommentar


    • #3
      Ja genau...Das ichkeine Angst vor "Hackern" haben muss und keiner auf iwas zugreifen kann, was er nicht soll?

      Kommentar


      • #4
        Was ist denn Dein Ziel?
        bitcoin.de <- Meine Freelancerwährung

        Kommentar


        • #5
          Also wenn es hier um ein PDF geht das innerhalb eines geschlossenen Mitglieder Bereichs downloadbar ist - dann sollte als aller erstes mal sichergestellt sein dass die Quelldatei nicht in einem vom Webserver zugreifbaren Verzeichnis abgelegt ist.
          Das geht aus deinem Code nicht eindeutig hervor ob das bereits gegeben ist oder noch optimiert werden sollte.

          Bezogen auf den Code den du gepostet hast habe ich sonst nichts anzumerken.

          BTW:
          Der filename Parameter innerhalb des Content-Disposition HTTP Response Headers sollte in doppelten Anführungszeichen stehen da dein Dateiname ein Leerzeichen zwischen Tag und Stunde enthält.

          Kommentar


          • #6
            and wird in PHP nicht benutzt sondern &&. Es hat unterschiedliche Prioritäten.
            In einem Anderen Beitrag von Dir mit dem Selben Code hast du Klammern um Dein IF weggelassen. https://www.php.de/forum/webentwickl...on#post1542175
            Wie lernst Du PHP?
            bitcoin.de <- Meine Freelancerwährung

            Kommentar


            • #7
              Zitat von Alpha Beitrag anzeigen
              and wird in PHP nicht benutzt sondern &&. Es hat unterschiedliche Prioritäten.
              In einem Anderen Beitrag von Dir mit dem Selben Code hast du Klammern um Dein IF weggelassen. https://www.php.de/forum/webentwickl...on#post1542175
              Wie lernst Du PHP?
              Ob and oder && ist in diesem Fall völlig egal.
              Er kommt vermutlich von Python o.ä. daher der Coding Style ohne Klammern und die Verwendung von and statt &&.

              Ansonsten ist das Script sicher im Sinne von Command Injections oder Path Traversal Angriffe (da das Laden der Dateien nicht durch Benutzereingaben durchgeführt wird).
              Die Logik hinter den jeweiligen Variablen zu verstehen ist allerdings überhaupt nicht schwer, weshalb auch keinerlei Schwierigkeit besteht an alle Dateien zu kommen (ohne entsprechendes Wissen über deren Existenz).
              Sicherheit hierbei könntest du über Passphrases (>= 32 Chars) sicherstellen, die unique für die jeweiligen Files sind und mit dem Request angegeben werden müssen.
              "Software is like Sex, it's best if it's free." - Linus Torvalds

              Kommentar


              • #8
                Die Logik hinter den jeweiligen Variablen zu verstehen ist allerdings überhaupt nicht schwer, weshalb auch keinerlei Schwierigkeit besteht an alle Dateien zu kommen (ohne entsprechendes Wissen über deren Existenz).
                Sicherheit hierbei könntest du über Passphrases (>= 32 Chars) sicherstellen, die unique für die jeweiligen Files sind und mit dem Request angegeben werden müssen.
                Wie genau müsste ich das machen?

                Kommentar


                • #9
                  Zitat von Locke38 Beitrag anzeigen

                  Wie genau müsste ich das machen?
                  Sehr genau, also ohne einen Bit-Fehler.

                  Kommentar


                  • #10
                    Und du solltest deine POST Parameter auf existens pürfen mittelst isset oder empty. Ansonsten kann das ganz Skript crashen, wenn diese Felder nicht übermittelt werden sollten.

                    Kommentar


                    • #11
                      Zitat von protestix Beitrag anzeigen

                      Sehr genau, also ohne einen Bit-Fehler.
                      Okay
                      Hast du zufällig einTutorial oder ne gute seite wo ich das verfahren nachlesen kann?

                      Kommentar

                      Lädt...
                      X