readfile für Datein aus geschützem Ordner

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

  • readfile für Datein aus geschützem Ordner

    Hallo nochmal. Da darauf hingewiesen wurde, das get-Parameter in einer readfile funktion probematisch sind, suche ich nun eine Lösung wie man Bilder und Dateien aus einem htaccess geschützen Ordner am besten ausliest.

    Folgende Lösung möchte ich diskuieren:

    [PHP]

    Datei mit MySql-Daten

    PHP-Code:
    <?php
    $img_arr 
    unserialize($text[$column]);
                             
    $img_name $img_arr['file_name'];
                             
    $img $img_arr['file'];
                             
    $destination $img_arr['destination'];

     
    $_SESSION[$img] = $img;                                                  
     
    $_SESSION[$destination] = $destination;

    <
    img src=\"./control/readfiles/getimage.php?destination=".$destination."&file=".$img."&
    session_id="
    .session_id()."&token=".$_SESSION['token']."\" border=\"0\" alt=\"".$img_name."\">

    //die Datei readfile:

    session_start();

    if(
    $_GET['token'] == $_SESSION['readfile_'.$sitekey]) {

    $finfo = new finfo(FILEINFO_MIME);

       
    $mime_type = $finfo->file('../'.$_SESSION[$_GET['destination']].$_SESSION[$_GET['file']]);
                     
       header("
    Content-type".$mime_type."");
       header("
    Content-Disposition: ; filename=\"".$_SESSION[$_GET['file']]."\"");

       
    readfile('../'.$_SESSION[$_GET['destination']].$_SESSION[$_GET['file']]);

    }
    ?>
    Die Tokenvariable ändert sich bei jedem neuen Browseraufruf. So kann man passwortgeschütze Seiten sichern.

    Für Tipps bin ich sehr dankbar.
    Zuletzt geändert von sanktusm; 16.11.2013, 16:29.

  • #2
    PHP-Code:
     $_SESSION[$img] = $img;                                                  
     
    $_SESSION[$destination] = $destination
    Ist das nicht ein bisschen sinnlos, wenn der Array-Key genauso genannt wird wie sein Wert?

    Kommentar


    • #3
      Die Sessions mit den Key und den Werten werden nicht in der Datei readfile definiert. Außerdem muss es möglich sein für jedes Element (Datei oder Bild) ein eindeutiger Key zu definieren. Vorher habe ich das so gelöst:

      PHP-Code:
      session_start();

      if(
      $_GET['token'] == $_SESSION['readfile_'.$sitekey]) {

      $finfo = new finfo(FILEINFO_MIME);

         
      $mime_type $finfo->file('../'.[$_GET['destination'].$_GET['file']]);
                       
         
      header("Content-type: ".$mime_type."");
         
      header("Content-Disposition: ; filename="".$_GET['file']."\"");

         
      readfile('../'.$_GET['destination'].$_GET['file']);



      Damit kann man ja dann jeglichen Pfad und jeglich Datei definieren und auch alle Config.phps auslesen lassen.

      Also der Gedanke eine Session zu definieren ist eine Versuch die ungeschütze readfile.php - Datei vor missbrauch zu schützen und - soweit ich weiß kann man ja SESSION nicht einfach umschreiben oder anlegen weil das php seitig gemacht ist. (normalerweise)

      Kommentar

      Lädt...
      X