ChrisB: Kurze Frage zu "include()"

Beitrag lesen

Hi,

Kann man mit dem PHP-Befehl include(file) eigentlich nur Dateien vom eigenen Server einbinden (also z.B. include(unterverzeichnis/skript.php)) oder kann man auch auf eine Datei verweisen, die sich auf einem fremden Server befindet (also in der Richtung include(http://fremder-server.de/skript.php).

Kann man, ja - wenn die entsprechenden Konfigurationsoptionen das erlauben. allow_url_fopen und allow_url_include sind hier die Hauptverantwortlichen.

Ich habe natürlich schon Google bemüht, aber seltsamerweise verschiedene Antworten gefunden. Einmal, dass das nicht möglich ist, weil das PHP des fremden Servers die Datei schon "geparst" schicken würde, ein anderes Mal, dass sowas schon möglich ist.

Natuerlich ist das Ergebnis jeweils ein unterschiedliches, abhaengig davon ob der Code schon auf dem anderen Server geparst wurde oder nicht.
Du kannst bspw. http://example.com/script.php per include einbinden - dann wirst du, wenn der Server von example.com Dateien mit der Endung .php parst, nur die Ausgabe dieses Scriptes bekommen.
Oder du bindest http://example.com/script.txt o.ae. ein - Text-Dateien wird der Server hoechstvermutlich nicht parsen - d.h., der eventuell in dieser Ressource enthaltene PHP-Code wird in dein Script "eingefuegt", und dann als Bestandteil von diesem ausgefuehrt. Damit sollte auch sofort klar sein, welche grosses Sicherheitsrisiko damit verbunden ist - Code, der vermutlich nicht deiner Kontrolle unterliegt, und jederzeit durch anderen ausgetauscht werden koennte, laeuft auf deinem Server mit all den Rechten, die dein PHP-"Benutzer" dort hat - Loeschen von Dateien, etc. pp.

MfG ChrisB

--
"The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."