Tom: Zugriff auf Dateien ohne htacess blockieren?

Beitrag lesen

Hello,

Wie würde das Script dann aussehen, finde es eine gute Möglichkeit, wüsste aber nicht, wie das zu realisieren wäre, ohne dass die Datei von aussen erreichbar ist. Wäre mega cool, wenn du es mir genauer erklären könntest.

Du möchtest also über HTTP auf Dateien zugreifen, die auf dem Filesystem des Webservers liegen. Dazu musst Du aus den Dateien ersteinmal HTTP-Ressourcen machen...

Am besten fängst Du vorne an:

Lege die Dateien außerhalb der Document Root im Filesystem des Webservers ab.
Gebe dem PHP-Prozess (lesenden) Zugriff auf die Verzeichnisse, in denen die Dateien liegen.

Bastel Dir eine Funktion, die ein solches Verzeichnis scannen kann und die Namen der (lesbaren) Dateien dem Browser anzeigen kann.

Mache aus der Anzeige der Namen valides HTML, z.B. eine formatierte Liste mit Links

scriptname.php?file=123

Wenn Du jetzt schon an Sicherheit denken willst, dann speicherst Du die Pfade der Dateien, die Du z.B. mit der Funktion glob() ausgelesen hast in einem Array in Deiner Session und lieferst jetzt nur einen Klartextnamen mit hintliegendem Link aus, wie ich ihn oben dargestellt habe. Das sorgt dafür, dass man nur auf Files zugreifen kann, die Du auch dafür freigegeben hast.

Wenn jetzt ein Request mit

http://example.org/scriptname.php?file=123

auf Deinem Webserver eintrifft, dann muss das Script scriptname.php wissen, dass es im Array in der Session  nachgucken soll, ob unter dem Index 123 ein gültiger Pfad zu einer Datei eingetragen ist und diesen dann an die Ausgabefunktion weiterreichen.

Die Ausgabefunktion macht nichts anderes, als dass sie das File mittels

header('Content-Type: application/octet-stream');
    readfile($path);

ausgibt...

Siehe hierzu die Benutzerkommentare von http://php.net/manual/de/function.header.php

In das von mir beschriebene Modell kannst Du nun leicht benutzerspezifische Zugriffsrechte einbauen.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de
0 55

Zugriff auf Dateien ohne htacess blockieren?

__pat__
  • php
  1. 0
    dedlfix
    1. 0
      __pat__
      1. 2
        dedlfix
        1. 0
          __pat__
          1. 0
            Chrisliebaer
            1. 0
              dedlfix
              1. 0
                Tom
                1. 0
                  Tom
                  1. 0

                    Dateiausgabe Korrektur :-)

                    Tom
                    1. 0
                      __pat__
                      1. 0
                        Tom
                        1. 0
                          __pat__
                          1. 0
                            Tom
                            1. 0

                              Funktion für den Download von Files, Diskussion erwünscht

                              Tom
                              1. 0
                                Pragma
                                1. 0
                                  __pat__
                                  1. 0
                                    Tom
                                    1. 0

                                      PHP Readfile vs. sequentieller Ein-/Ausgabe für Download-Script

                                      Pragma
                                  2. 0
                                    Pragma
                                    1. 0
                                      Tom
                                    2. 0
                                      __pat__
                                      1. 0
                                        Pragma
                                2. 0
                                  Tom
                                  1. 0
                                    Pragma
                              2. 0

                                ...Diskussion erwünscht - wirklich?

                                Pragma
                                • menschelei
                            2. 0
                              __pat__
                              1. 0
                                Tom
                                1. 0
                                  __pat__
                                  1. 0
                                    Tom
                                    1. 0
                                      __pat__
                                      1. 0
                                        Tom
                                        1. 0
                                          __pat__
                    2. 0
                      Tom
      2. 0
        Tom
        1. 0
          __pat__
          1. 0
            Tom
            1. 0
              __pat__
        2. 0
          Pragma
          1. 0
            Tom
            1. 0
              __pat__
              1. 0
                Tom
            2. 0
              Pragma
              1. 0
                Tom
                1. 0
                  Pragma
                  1. 0
                    Tom
                    1. 0
                      Pragma
              2. 0
                Tom
                1. 0
                  __pat__
                  1. 0
                    Tom
                2. 0
                  Pragma
                  1. 0
                    __pat__
                    1. 0
                      Pragma
          2. 0
            __pat__
            1. 0
              Tom