Include funktioniert nicht

voiture

Angesehenes Mitglied
Hey, ich habe in PHP in einem String eine Adresse die in etwa wie folgt aussieht (Adresse wurde per URL übergeben):
QUOTE
http://site.com/abc/123/seite.php?a=2&b=3&c=4&e=5



Gebe ich diese Adresse per print aus sehe ich diese Adresse auch richtig, will ich die Adresse nun aber so inkludieren:

CODE
include $string;



gibt mir mein Browser nichts aus.

Inkludiere ich die Seite so:

CODE
include "http://site.com/abc/123/seite.php?a=2&b=3&c=4&e=5";



funktioniert es wieder. Woran kann das denn liegen? Ich verstehe es einfach nicht.
 
Zusatz:
Wenn ich die zwei Strings vergleiche kommt raus, dass sie nicht identisch sind.
 
QUOTE (voiture @ Di 6.2.2007, 22:12) Zusatz:
Wenn ich die zwei Strings vergleiche kommt raus, dass sie nicht identisch sind.

Sag mal, dass ist nicht Dein ernst, eine URL zu includen? Eine bessere Sicherheitslücke kannst Du fast nicht in Deine Webanwendung einbauen...


Wenn nicht das gleiche Rauskommt, dann sind die beiden Strings auch unterschiedlich, da hast Du wohl ein kryptisches Zeichen dazwischen bekommen.
 
Hallo, dass das unsicher ist weiß ich, ich werde das ganze auch noch absichern sobald es funktioniert. Zum Problem:
Ich lasse die Variable ja ausgeben. Nun habe ich eine URL auf dem Bildschirm. Füge ich diese in den Browser ein wird ja die korrekte Seite geladen, also kann doch eigentlich nichts falsch sein (also z.b. ein kryptisches Zeichen), oder?
 
QUOTE (voiture @ Di 6.2.2007, 23:13) [...] ich werde das ganze auch noch absichern sobald es funktioniert. [...]

*gg* Und wie?

Und doch kann es immer noch falsch sein, da der Browser diese Zeichen ggf. filtern kann.
 
Ok, daran habe ich garnicht gedacht, werde ich mal sehen, aber theoretisch müsste es doch funktionieren wenn ich in einer Adresse alle Sonderzeichen wie "/", &" usw. durch andere Zeichenfolgen ersetze und vor dem Inkluden das Gegenteil unternehme.

Zur Sicherheit:
Es wird am Ende immer nur ein Ordner auf dem Server + der Url nach dem Server angegeben. Es wird nicht möglich sein eine ganze URL einzubinden (z.n. mit einem schädlichen Script).

Danke Sascha!
 
QUOTE (voiture @ Di 6.2.2007, 23:25) [...]
Zur Sicherheit:
Es wird am Ende immer nur ein Ordner auf dem Server + der Url nach dem Server angegeben. Es wird nicht möglich sein eine ganze URL einzubinden (z.n. mit einem schädlichen Script).
[...]

Schon mal was von Man-In-The-Middle-Angriffen oder DNS-Spoofing gehört?
 
url_fopen wird aus sein bei Dir, musst Du mal in Deiner config bzw. phpinfo nachschauen.

Aber es hat auch seinen Grund warum es default aus ist ... steht auch was zu im PHP Manual
 
ich hab mal zwei fragen:
1. seit wann kann man denn überhaupt sinnvoll eine URL includen? (sicherheit hin oder her)
2. welches Ergebnis will man sich dadurch überhaupt erhoffen?


QUOTE Hey, ich habe in PHP in einem String eine Adresse die in etwa wie folgt aussieht (Adresse wurde per URL übergeben):


was heisst das genau? eventuell könntest du mal ein paar codestücke mehr posten. Ich vermute mal es liegt an dem register_globals eintrag.


Benutze anstatt include (wenns um externe php Dateien geht) immer fopen (mit vernünftigem Timeout) oder notfalls tuts auch ein file_gets_content.
 
QUOTE (voiture @ Di 6.2.2007, 21:48)Hey, ich habe in PHP in einem String eine Adresse die in etwa wie folgt aussieht (Adresse wurde per URL übergeben):
...
Gebe ich diese Adresse per print aus sehe ich diese Adresse auch richtig, will ich die Adresse nun aber so inkludieren:
...
gibt mir mein Browser nichts aus.

Inkludiere ich die Seite so:
...
funktioniert es wieder. Woran kann das denn liegen? Ich verstehe es einfach nicht.

Der Browser ersetzt automatisch gewisse Zeichenfolgen bzw. interpretiert für uns unverständliche Zeichenfolgen auf eine für ihn verständliche Art und Weise. Sprich: Er macht aus einer kryptischen Zeichenfolge eine Url. Das macht nicht nur der Browser so, sondern in der Regel auch jene Befehle, mit denen in Programmen auf Url-Quellen zugegriffen wird.

Solche 'automatischen Übersetzungen' lassen sich zum Hacken einer Anwendung verwenden, da jemand eine scheinbar harmlose Zeichenfolge übergibt, der Browser oder das verarbeitende Script eine Url draus macht und den dortigen Code lädt und ausführt.

Wenn dir bereits diese Übersetzung unverständlich ist: Welche der anderen Übersetzungsmöglichkeiten (Stichwort: Unicode, JavaScript escape, encodeURI) sind dir dann auch noch unbekannt, die jemand anderes fröhlich zum Hacken deiner Anwendung nutzen kann?
 
es liegt wie mein Vorredner schon gesagt hat an fopen. Was sinnvollerweise meistens gesperrt ist.
 
hi

damit du die php datei von einen externen server einbinden kannst, ändere die endung .php in .inc und benenne deine datei um mit der .inc endung und es sollte klappen.

über die so gross angesprochene sicherheitslücken sehe ich kein alzugrosses problem, solange du den lieferanten der inc vertrauen kannst.

grüsse
jeliel
 
QUOTE (jeliel @ Mi 7.2.2007, 14:41) damit du die php datei von einen externen server einbinden kannst, ändere die endung .php in .inc und benenne deine datei um mit der .inc endung und es sollte klappen.


Das ist Unsinn oder hast Du irgendwo eine Quelle, die einen dahingehenden Bug in PHP beschreibt?

Die Dateiendung ist völlig irrelevant für den Include-Befehl. Selbst im PHP Manual werden nur .php-Dateien eingebunden.
 
Nene probiert hab ich es noch nicht, werd ich aber bei Gelegenheit mal machen, nachdem ich den Kommentar da gelesen hab.

Da meine Klassen eh immer eine .inc Endung haben bin ich auch noch nie über das Problem gestolpert (mal davon abgesehen, dass ich meine PHP Dateien auch immer nur auf einem Server liegen habe).

Dann hab ich nix gesagt
wink.gif
 
im gegenteil, bin froh das ich dir nen tipp geben konnte. wegen sicherheit, falls du mal von jemand anders eine .inc datei einbauen willst (was man echt nur als aller letze möglichkeit machen sollte), kannst du dich über einen vorparser absichern. kannst ja die datei einmal runterladen und ansehen, und alles was du für bedenktlich hältst mit preg_match usw parsen. falls alles ok ist, dann zulassen. es gibt auch kommerzielle lösungen um die sicherheit von php datein sicherzustellen, dann läst diese einmal vorm ausführen zu.

ich hab es so gemacht, dass ich die datei für 5-10 min cache, und die gecachte version wurde geprüft. reduziert somit mein traffic.

grüsse
jeliel
 
QUOTE (sd12 @ Mi 7.2.2007, 9:42) es liegt wie mein Vorredner schon gesagt hat an fopen. Was sinnvollerweise meistens gesperrt ist.

Ich frage mich, wie man darauf schließen kann, und besonders sich dabei so sicher zu sein, wenn diese Aussage gemacht wird:


QUOTE (voiture @ Di 6.2.2007, 21:48)[...]
Inkludiere ich die Seite so:

CODE
include "http://site.com/abc/123/seite.php?a=2&b=3&c=4&e=5";



funktioniert es wieder. Woran kann das denn liegen? Ich verstehe es einfach nicht.
 
Na danke schonmal für die zahlreichen Antworten. Wie gesagt, ich inkludiere eine Seite von MEINEM Server also mit meiner Domain und zwar mit folgendem Schma:
QUOTE
http://site.com/abc/123/seite.php?a=2&b=3&c=4&e=5



Das funktioniert auch, nur mit der Variable funktioniert es einfach nicht. Gebe ich den Inhalt dieser Variablen allerdings in die Adresszeile des Browsers ein wird die Seite richtig angezeigt.

jAuer, da hast du recht, ich kann mit den Begriffen was anfangen, aber ich möchte es erstmal zum laufen bekommen.
 
Zurück
Oben