Kurze Frage zu "include()"
Markus Gelling
- php
Hallo zusammen,
ich fürchte, das hier ist ein absolute Anfängerfrage, aber ich wäre euch dankbar, wenn ihr mir helfen könntet.
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).
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.
Vielleicht hab ich da auch verschiedene Sachen durcheinandergebracht.
Vielen Dank für eure Hilfe,
Markus.
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
Moin.
ich fürchte, das hier ist ein absolute Anfängerfrage, aber ich wäre euch dankbar, wenn ihr mir helfen könntet.
Kein Problem.
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
Grundsätzlich ja, sofern es die Server-Konfiguration erlaubt. Andernfalls gibt's ein
Warning: include() [function.include]: URL file-access is disabled in the server configuration
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.
Vielleicht hab ich da auch verschiedene Sachen durcheinandergebracht.
Wenn du include() eine URL übergibts, wird in dein Skript exakt derselbe INhalt eingefügt, den auch der Browser erhält, wenn du die URL manuell in die Adressleiste eingibts. Bei *.php-Dateien also in der Regel der nur die HTML-Ausgabe, d.h. das Skript wird auf dem fremden (Herkunfts-)Server und nicht deinem eigenen ausgeführt. Liefert der Fremd-Server die php-Datei unverarbeitet aus (d.h. siehst du im Browser unter dieser Adresse den Quellcode des Skripts), wird sie bei dir geparst und interpretiert.
Christoph
Vielen Dank für eure Hilfe,
Markus.
Erstmal vielen Dank, das hilft mir dann doch sehr weiter.
Eine Frage hätt ich dann noch: Kann man eigentlich verhindern, dass Dateien vom eigenen Server auf diese Weise in fremde Skripte eingebunden werden?
Soweit ich weiss, kann man mittels .htaccess den http-Zugriff unterbinden, damit die Dateien z.B. nicht über den Browser eingelesen werden können, aber hilft das auch "gegen" den Zugriff durch Skripte (also läuft das ebenfalls über http)?
Danke,
Markus.
Hallo
Soweit ich weiss, kann man mittels .htaccess den http-Zugriff unterbinden, damit die Dateien z.B. nicht über den Browser eingelesen werden können, aber hilft das auch "gegen" den Zugriff durch Skripte (also läuft das ebenfalls über http)?
Ja, wenn man, wie du im Eröffnungsposting ausführst, eine Ressource mit include("http://fremder-server.de/skript.php") einbinden will, tut man dies per HTTP. Steht ja auch vorne dran.
Tschö, Auge