dave: Können externe User .php-Files downloaden?

Hallo,

meine Frage hat einen sicherheitstechnischen Hintergrund. Wenn man versucht mit dem Browser eine .php-Datei aufzurufen, gibt der Browser immer nur die durchgearbeitete HTML-Version raus.

Wie sieht es denn aus, wenn ein User mit einem Downloadmanager versucht eine .php-Datei zu downloaden? Kommt er so an den PHP-Code?

Wenn ja, wäre das ja eine ziemliche Sicherheitslücke... er weiss dann genau den Aufbau eines Login-Systems und könnte entsprechende Variablen manuell per GET der Seite zufügen.

Grüsse
Dave

  1. Hallo,

    Wie sieht es denn aus, wenn ein User mit einem Downloadmanager versucht eine .php-Datei zu downloaden? Kommt er so an den PHP-Code?

    Nein, es wird auch nur der generierte HTML-Code erhalten. Solange der PHP-Interpreter nicht ausfaellt, kommt man nicht an den PHP-Code.

    Wenn ja, wäre das ja eine ziemliche Sicherheitslücke... er weiss dann genau den Aufbau eines Login-Systems und könnte entsprechende Variablen manuell per GET der Seite zufügen.

    Login-Daten oder DB-Verbindungsinformationen, die z. B. per include() eingebunden werden, sollten generell nicht unterhalb von DocumentRoot sondern in von auszen unzugaenglichen Verzeichnissen gelagert werden.

    MfG, Thomas

  2. Hallo,

    wenn er keinen ftp-zugang besitzt sollte es auch nicht gehen...der downloadmanager tut dies dann über http und erhält somit eine geparste version...

    es empfiehlt sich sowieso zugangsdaten in einer extra zu includierenden datei abzulegen, die oberhalb des webpage-basisverzeichnis liegt...

    Odium

  3. Hi,

    Wie sieht es denn aus, wenn ein User mit einem Downloadmanager versucht eine .php-Datei zu downloaden? Kommt er so an den PHP-Code?

    Auch download manager sprechen die Daten ueber http an, und kriegen daher nur den geparsten Inhalt, sprich html, zu sehen.

    Gruss, Mel

  4. Hi Dave,

    Wie sieht es denn aus, wenn ein User mit einem Downloadmanager
    versucht eine .php-Datei zu downloaden? Kommt er so an den PHP-Code?

    Ein Download-Manager tut nichts anderes als ein Browser: Er sendet
    HTTP-Requests an den Webserver.
    Dieser entscheidet anhand seiner Konfiguration, was er tun soll:
    a) Ist für die entsprechende Datei mit der Endung .php eine Verknüp-
       fung mit einem PHP-Interpreter definiert, dann wird dieser Inter-
       retergestartet,
    b) ist etwas anderes definiert, dann passiert etwas anderes.

    Bedenke dabei insbesondere, daß eine Datei auf dem Server durchaus
    unter mehreren URLs ansprechbar sein kann und daß die genannte Ver-
    knüpfungslogik keineswegs serverweit einheitlich definiert sein muß!

    Es ist nicht weiter schwer, eine Konfiguration so vorzunehmen, daß
    dieselbe PHP-Datei unter dem einen URL ausgeführt und gleichzeitig
    unter dem anderen URL ohne Interpretation angezeigt wird.

    Wenn ja, wäre das ja eine ziemliche Sicherheitslücke... er weiss
    dann genau den Aufbau eines Login-Systems

    Deine Besorgnis ist _im Prinzip_ berechtigt.

    Ein fehlerhaft konfigurierter Server würde genau diesen Effekt aus-
    lösen. So etwas könnte bei einem Upgrade der Server-Software passie-
    ren, aber beispielsweise auch dann, wenn ein Anwender die Server-
    Konfiguration via .htaccess erweitert und dabei einen Fehler macht.

    Es ist daher stets sinnvoll, zu wissen, was man tut, wenn man tat-
    sächlich Kennworte in PHP-Skripten ablegt.
    Eine mögliche Alternative besteht natürlich darin, genau dies nicht zu
    tun und die entsprechenden Informationen statt dessen aus einer Datei
    außerhalb des URL-Raums einzulesen, die für einen Besucher nicht direkt
    ansprechbar ist. Das mag ein bißchen weniger performant sein, aber es
    beruhigt die Nerven ungemein. ;-)

    und könnte entsprechende Variablen manuell per GET der Seite
    zufügen.

    Letzteres ist zudem noch ein besonderes Problem von PHP, das aber
    durch Verwendung eines sorgfältigen Programmierstils vermeidbar ist.
    Zu diesem Thema gibt es reichlich Threads hier im Archiv.

    Viele Grüße
          Michael