Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Einbinden von Dateien ohne include (https://www.delphipraxis.net/87506-%5Bphp%5D-einbinden-von-dateien-ohne-include.html)

Luckie 1. Mär 2007 16:13


[PHP] Einbinden von Dateien ohne include
 
Ich habe gerade eine Mail von meinem Weboster bekommen:
Zitat:

im Zuge des Ausbaus unseres Sicherheitskonzeptes werden wir das direkte
Einbinden von Internetadressen in PHP 4 ab dem 5.3.2007 sperren.

Konkret wird es, wie bereits standardmäßig in PHP 5.2, nicht
mehr möglich sein, Internetadressen über die Funktionen include(),
include_once(), require() und require_once() aufzurufen und einzubinden.
Wie löse ich denn folgendes Problem:
Code:
include $_SERVER['DOCUMENT_ROOT'].'/php/dirhelpers.php';
include $_SERVER['DOCUMENT_ROOT'].'/includes/nav.shtml';
In dirhelpers.php stehen ein paar Hilfsfunktionen, die ich weiter unten brauche und in nav.shtml steht die Navigation, die an der Stelle auch angezeigt wird.

Das tritt übrigens ab dem 5.3. in Kraft. Und ich habe keine Ahnung, wo ich so was überall benutzt habe. Etwas rechtzeitiger wäre schön gewesen. :wall:

mkinzler 1. Mär 2007 16:15

Re: [PHP] Einbinden von Dateien ohne include
 
Du bindest ja nichts über das Internetprotokoll ein.

Luckie 1. Mär 2007 16:16

Re: [PHP] Einbinden von Dateien ohne include
 
Ach so. Gut, wenn das so ist, dann hat sich das erledigt. ;)

yankee 1. Mär 2007 16:28

Re: [PHP] Einbinden von Dateien ohne include
 
und wenn es dochmal über's Internet sein muss, dann so:
eval(file_get_contents('http://...'));

Wobei ganz klar anzumerken ist, dass sowas vermieden werden sollte, wo es möglich ist. Und es ist normalerweise möglich.

DGL-luke 1. Mär 2007 16:35

Re: [PHP] Einbinden von Dateien ohne include
 
per file_get_contents bekommst du aber im normalfall keinen quellcode, per include schon, oder?!

Luckie 1. Mär 2007 16:37

Re: [PHP] Einbinden von Dateien ohne include
 
Es sind ja zwei Fälle: Zum einem wird Quellcode direkt ausgegeben und zum anderen wird auf Quellcode in einer Datei zugegriffen.

yankee 1. Mär 2007 17:19

Re: [PHP] Einbinden von Dateien ohne include
 
Zitat:

Zitat von DGL-luke
per file_get_contents bekommst du aber im normalfall keinen quellcode, per include schon, oder?!

Zitat:

Zitat von Luckie
Es sind ja zwei Fälle: Zum einem wird Quellcode direkt ausgegeben und zum anderen wird auf Quellcode in einer Datei zugegriffen.

Ich glaube wir reden aneinander vor, denn sonst kann ich mir aus euren Aussagen keinen Sinn machen...

Es geht mir darum, dass diese zwei Befehle:

include('http://www.delphipraxis.net');
eval(file_get_contents('http://www.delphipraxis.net'));

den identischen Effekt haben. (include dürfte performancetechnisch die Nase vorn haben, aber sonst...).

DGL-luke 2. Mär 2007 17:40

Re: [PHP] Einbinden von Dateien ohne include
 
Das heißt, beide greifen per fopen-Wrapper über das HTTP-Protokoll auf den Webserver der Gegenseite zu? D.h. werden nur eine bereits ausinterpretierte php-Datei laden, falls der Webserver die referenzierte Datei standardmäßig interpretiert?

Ich hab mir mal sagen lassen, beim include sei das nicht der Fall...

yankee 2. Mär 2007 18:39

Re: [PHP] Einbinden von Dateien ohne include
 
Zitat:

Zitat von DGL-luke
Das heißt, beide greifen per fopen-Wrapper über das HTTP-Protokoll auf den Webserver der Gegenseite zu? D.h. werden nur eine bereits ausinterpretierte php-Datei laden, falls der Webserver die referenzierte Datei standardmäßig interpretiert?

Ja
Zitat:

Zitat von DGL-luke
Ich hab mir mal sagen lassen, beim include sei das nicht der Fall...

Dann sag' dem, der dir das gesagt hat, dass er keine Ahnung hat.
Ich habe dies schon relativ häufig gehört und konnte noch nie nachvollziehen, wie man das nachvollziehen kann.

Was soll include denn anders machen? Dem gegenüberliegenden Webserver mal mitteilen, dass du gerne den Quelltext hättest statt die geparste Ausgabe? Das wäre ja DIE Sicherheitslücke, wenn das ginge *gg*. So kann man sich den Quelltext von jeder beliegbigen Webseite heruntzerladen :-).
Aber nein. Auch die include-Funktion mit url-Wrapper macht eine ganz normale http-Anfrage, die auch das gleiche Ergebnis liefert wie jede andere http-Anfrage..

Also wenn dir das nächste mal jemand sowas sagt, dann farg ihn mal, was der für einen coolen Webserver hat, der mekrt, dass die http-Anfrage von einer include-Funktion kommt und den Quelltext ausgibt.

DGL-luke 2. Mär 2007 18:44

Re: [PHP] Einbinden von Dateien ohne include
 
Danke. Ich hatte das auch nie ganz geglaubt ;-)

alcaeus 2. Mär 2007 22:54

Re: [PHP] Einbinden von Dateien ohne include
 
Der einzige Weg, bei PHP < 6 das Einbinden von Remote-Dateien zu verhindern, ist die HTTP-Wrapper fuer fopen zu verbieten, d.h. allow_url_fopen auf OFF zu stellen. Dann geht aber auch mit file_get_contents() nichts mehr ;)

Bei PHP6 gibts zwei verschiedene Einstellungen; einmal allow_url_fopen und die neue allow_url_include. Wenn man aber sieht, wie lange Hoster fuer die Umstellung von PHP4 auf 5 brauchen, kann man sich ausrechnen, wie langs dauert, bis die ersten PHP6-Hoster auftauchen, vor allem weils da auch kein register_globals mehr geben wird (ist dann immer auf OFF)

Wenn allow_url_fopen aus ist, dann muss man die URL auseinandernehmen, get_file_contents() mit den Sockets nachbauen, und anschliessend den Code ausfuehren. Ich frag mich aber sowieso warum man auch nur irgendwas per HTTP-Wrapper in include reinhauen will, das kann u.U. sehr boese enden :roll:

Greetz
alcaeus

yankee 3. Mär 2007 10:17

Re: [PHP] Einbinden von Dateien ohne include
 
Zitat:

Zitat von alcaeus
Der einzige Weg, bei PHP < 6 das Einbinden von Remote-Dateien zu verhindern, ist die HTTP-Wrapper fuer fopen zu verbieten, d.h. allow_url_fopen auf OFF zu stellen. Dann geht aber auch mit file_get_contents() nichts mehr ;)

Man kann auch am Quelltext von php fummeln :-). Das sollte nicht weiter schwierig sein dann url-wrappers für include zu sperren.

Und php 6... Wenn das mal endlich rauskommt *gg*. Ich warte schons eit längerem auf utf8 :-).

mkinzler 3. Mär 2007 10:21

Re: [PHP] Einbinden von Dateien ohne include
 
Zitat:

Zitat von yankee
Und php 6... Wenn das mal endlich rauskommt *gg*. Ich warte schons eit längerem auf utf8 :-).

http://de2.php.net/manual/de/function.utf8-encode.php
http://de2.php.net/manual/de/function.utf8-decode.php

alcaeus 3. Mär 2007 10:26

Re: [PHP] Einbinden von Dateien ohne include
 
@mkinzler: Alles < PHP6 ist einfach nur PITA wenns um Multibyte-Charsets geht. Da kriegst du auch schon mal die falsche Laenge eines Strings raus, weil das Ding einfach nur Bytes zaehlt :wall:

Ich selbst hab frueh genug aufgegeben, da was machen zu wollen, aber es soll wohl nicht schoen sein ;)

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz