Der folgende Beitrag wurde am 01. 10. 2009, 10:33 Uhr von Dieter veröffentlicht.
Hallo Selfhtml Forum,
Ich wundere mich schon lange wie die Variable einer URL wie http://tinyurl.com/5kxh ausgelesen wird? Ich dachte immer, dass es dazu auch noch einen weiteren Wert braucht. Sowas in der Richtung http://tinyurl.com/var=5kxh.
Wird dies auch mit $_GET bewerkstelligt?
Grüsse!
Der folgende Beitrag wurde am 01. 10. 2009, 10:35 Uhr von Cheatah veröffentlicht.
Hi,
> Ich wundere mich schon lange wie die Variable einer URL wie http://tinyurl.com/5kxh ausgelesen wird?
die beim Server aufgerufene URL steht dem Server durchaus zur Verfügung.
> Wird dies auch mit $_GET bewerkstelligt?
Nein. *FALLS* PHP im Spiel sein *SOLLTE*, wäre $_SERVER der Datenspeicher der Wahl.
Cheatah
--
X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes
Der folgende Beitrag wurde am 01. 10. 2009, 10:54 Uhr von Dieter veröffentlicht.
Hi Cheatah
Danke für deine Antwort. Stimmt, könnte man mit $_SERVER['QUERY_STRING']; lösen! Danke für deine Hilfe!
Der folgende Beitrag wurde am 01. 10. 2009, 11:03 Uhr von MudGuard veröffentlicht.
Hi,
> Danke für deine Antwort. Stimmt, könnte man mit $_SERVER['QUERY_STRING']; lösen! Danke für deine Hilfe!
Nein, da bei http://tinyurl.com/5kxh kein Query String vorhanden ist.
cu,
Andreas
--
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
Der folgende Beitrag wurde am 01. 10. 2009, 11:55 Uhr von Dieter veröffentlicht.
Hi,
Stimmt natürlich, sonst müsste ja noch mindestens ein ? (http://tinyurl.com/?5kxh) drin stehen!
Danke für den Hinweis.
Der folgende Beitrag wurde am 01. 10. 2009, 10:57 Uhr von Tom veröffentlicht.
Hello,
> Ich wundere mich schon lange wie die Variable einer URL wie http://tinyurl.com/5kxh ausgelesen wird? Ich dachte immer, dass es dazu auch noch einen weiteren Wert braucht. Sowas in der Richtung http://tinyurl.com/var=5kxh.
>
> Wird dies auch mit $_GET bewerkstelligt?
Das Arbeiten mit derartigen Werten und Ermitteln dieses Wertes ist nur möglich, wenn der Webserver entsprechend konfiguriert ist. Es handelt sich dabei um die "Path-Info".
Abfragen kannst Du sie bei PHP über die Variable $_SERVER['PATH_INFO'], in der dann der gesamte Restpfad nach dem gefundenen passenden Scriptnamen, aber ohne die URL-Parameter (hinter dem '?'), drinsteht.
Das ist z.B. beim Apache möglich, wenn die Konfigurationsvariable AcceptPathInfo auf On steht.
http://httpd.apache.org/docs/2.0/mod/core.html#acceptpathinfo
http://httpd.apache.org/docs/2.2/mod/core.html#acceptpathinfo
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de
Der folgende Beitrag wurde am 01. 10. 2009, 11:02 Uhr von Tom veröffentlicht.
Hello,
noch eine Ergänzung zur Sicherheit:
Aufgrund dieses Features des Apache-Servers (oder auch vieler anderer Webserver) ist die Variable $_SERVER['PHP_SELF'] ein Angriffsziel für XSS-Angriffe (Cross Site Scripting). Setzt man diese unbehandelt als Actiopn-Attribut eines Formulares ein, lässt sich das Formular "entführen", indem der Bösewicht die Seite über einen entsprend manipulierten Link anbietet.
Man bekommt dann zwar die Originalseite vom Originalserver angezeigt, der Request mit dem (ausgefüllten) Formular landet dann aber auf dem vom Angreifer bestimmten Server.
Daher muss diese Variable also vor Benutzung behandelt werden!
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de
Der folgende Beitrag wurde am 01. 10. 2009, 17:39 Uhr von Steffen veröffentlicht.
Hi,
kannst Du das erläutern oder Links posten.
Ich sehe in Deiner Beschreibung noch kein Sicherheitsrisiko.
MfG
- Steffen
Der folgende Beitrag wurde am 01. 10. 2009, 17:49 Uhr von ChrisB veröffentlicht.
Hi,
> Ich sehe in Deiner Beschreibung noch kein Sicherheitsrisiko.
Du baust X in ein HTML-Dokument ein, und X enthält einen Wert, den der Client zum überwiegenden Teil selbst bestimmen kann.
Dass das ein Sicherheitsrisiko ist, wenn du das einbauen unbehandelt vornimmst, sollte absolut offensichtlich sein.
Schliesslich gilt die Maxime "never trust incoming data" überall.
MfG ChrisB
--
Light travels faster than sound - that's why most people appear bright until you hear them speak.
Der folgende Beitrag wurde am 01. 10. 2009, 18:13 Uhr von Steffen veröffentlicht.
Hi,
ich glaube wir haben uns falsch verstanden.
Zitat von Tom:
8<--
Aufgrund dieses Features des Apache-Servers (oder auch vieler anderer Webserver) ist die Variable $_SERVER['PHP_SELF'] ein Angriffsziel für XSS-Angriffe (Cross Site Scripting). Setzt man diese unbehandelt als Actiopn-Attribut eines Formulares ein, lässt sich das Formular "entführen", indem der Bösewicht die Seite über einen entsprend manipulierten Link anbietet.
8<--
Darauf hat sich meine Frage bezogen und $_SERVER['PHP_SELF'] ist keine "incoming data"?!
Deswegen verstehe ich Toms Sicherheitsrisiko nicht.
MfG
- Steffen
Der folgende Beitrag wurde am 01. 10. 2009, 18:25 Uhr von Vinzenz Mai veröffentlicht.
Hallo Steffen,
> Darauf hat sich meine Frage bezogen und $_SERVER['PHP_SELF'] ist keine "incoming data"?!
> Deswegen verstehe ich Toms Sicherheitsrisiko nicht.
hier zwei Links, um die Du gebeten hast:
http://seancoates.com/xss-woes
http://blog.oncode.info/2008/05/07/php_self-ist-boese-potentielles-cross-site-scripting-xss/
Vielleicht siehst Du jetzt die Problematik.
Freundliche Grüße
Vinzenz
Der folgende Beitrag wurde am 01. 10. 2009, 18:30 Uhr von Steffen veröffentlicht.
Danke!!! :-)
Alles klar.
8<--<form action="/tests/simple.php/"><script>alert('xss')</script><foo">
8<--
Damit hat sich der Knoten gelöst.
Ich hatte eher an sowar wie folgt gedacht und bin nicht draufgekommen.
8<--<form action=/my/script.php/http://blablabla.bla/...
8<--
Danke nochmal.
MfG
- Steffen
Der folgende Beitrag wurde am 01. 10. 2009, 21:26 Uhr von Tom veröffentlicht.
Hello,
> Danke!!! :-)
Bitte. Hatte heute Nachmittag etweas anderes zu tun. SOchnst hätte ich Dir auch geantwortet...
> 8<--
> <form action="/tests/simple.php/"><script>alert('xss')</script><foo">
> 8<--
Das geht auch gänzlich ohne JavaScript.
Man kann mittels ['PHP_SELF'] den String dermaßen erweitern, dass das Action-Attribut auf ein anderes Request-Ziel zeigt. Das ist dann die Entführung...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de
Der folgende Beitrag wurde am 02. 10. 2009, 09:46 Uhr von Sven Rautenberg veröffentlicht.
Moin!
> > 8<--
> > <form action="/tests/simple.php/"><script>alert('xss')</script><foo">
> > 8<--
Dagegen hilft htmlspecialchars(). Aber...
> Das geht auch gänzlich ohne JavaScript.
> Man kann mittels ['PHP_SELF'] den String dermaßen erweitern, dass das Action-Attribut auf ein anderes Request-Ziel zeigt. Das ist dann die Entführung...
Demo hier:
http://www.thespanner.co.uk/2009/09/25/php-self-return-of-the-slash/
- Sven Rautenberg
Der folgende Beitrag wurde am 01. 10. 2009, 18:32 Uhr von Steffen veröffentlicht.
> Darauf hat sich meine Frage bezogen und $_SERVER['PHP_SELF'] ist keine "incoming data"?!
> Deswegen verstehe ich Toms Sicherheitsrisiko nicht.
Ich hab nochmal nachgelesen und musste feststellen, dass ja $_SERVER['PHP_SELF'] doch "incoming data" ist. :-( Ich dachte an SCRIPT_NAME.
MfG
- Steffen
Der folgende Beitrag wurde am 01. 10. 2009, 14:23 Uhr von ChrisB veröffentlicht.
Hi,
> Das Arbeiten mit derartigen Werten und Ermitteln dieses Wertes ist nur möglich, wenn der Webserver entsprechend konfiguriert ist. Es handelt sich dabei um die "Path-Info".
>
> Abfragen kannst Du sie bei PHP über die Variable $_SERVER['PATH_INFO'], in der dann der gesamte Restpfad nach dem gefundenen passenden Scriptnamen, aber ohne die URL-Parameter (hinter dem '?'), drinsteht.
Wenn es einen "passenden Scriptnamen" gibt - das düfte bei http://example.com/5kxh aber vermutlich nicht der Fall sein.
Wenn du mit PATH_INFO arbeiten willst, dann muss sich erst mal irgendwas "mehr" als nur / im Pfad befinden, das der Webserver als auszuführendes Script identifizieren kann.
MfG ChrisB
--
Light travels faster than sound - that's why most people appear bright until you hear them speak.
Der folgende Beitrag wurde am 01. 10. 2009, 15:33 Uhr von dedlfix veröffentlicht.
Hi!
> > Das Arbeiten mit derartigen Werten und Ermitteln dieses Wertes ist nur möglich, wenn der Webserver entsprechend konfiguriert ist. Es handelt sich dabei um die "Path-Info".
Das kann man so nicht sagen. Zunächst einmal ist es eine URL. Ob und was davon dann PathInfo wird, hängt von der Konfiguration des Webservers ab. Ansonsten kann 5kxh durchaus auch ein vorhandenes Dokument sein, dann gibt es kein PathInfo.
> > Abfragen kannst Du sie bei PHP über die Variable $_SERVER['PATH_INFO'], in der dann der gesamte Restpfad nach dem gefundenen passenden Scriptnamen, aber ohne die URL-Parameter (hinter dem '?'), drinsteht.
> Wenn es einen "passenden Scriptnamen" gibt - das düfte bei http://example.com/5kxh aber vermutlich nicht der Fall sein.
> Wenn du mit PATH_INFO arbeiten willst, dann muss sich erst mal irgendwas "mehr" als nur / im Pfad befinden, das der Webserver als auszuführendes Script identifizieren kann.
Jein. Man kann ja den Request mit mod_rewrite derart zu einem Dokument umschreiben, dass der gesamte Path-Teil als PathInfo zur Verfügung steht.
Lo!
Der folgende Beitrag wurde am 01. 10. 2009, 15:41 Uhr von ChrisB veröffentlicht.
Hi,
> Jein. Man kann ja den Request mit mod_rewrite derart zu einem Dokument umschreiben, dass der gesamte Path-Teil als PathInfo zur Verfügung steht.
Natürlich kannst du mod_rewrite hinzunehmen - dann brauchst du auch nicht mehr die Umgebungsvariable PATH_INFO, sondern kannst dir alles interessante auch in GET-Parametern zur Verfügung stellen lassen.
Ich bezog mich *nur* auf PATH_INFO, wenn man auf mod_rewrite verzichten will oder es nicht zur Verfügung hat.
http://example.com/x/pathinfo "geht", wenn der Server für x eine passende Datei findet, die er dem Request zuordnen kann.
http://example.com/pathinfo hingegen geht nicht, sondern liefert einen 404, wenn nicht zufällig pathinfo der Name einer Datei oder eines Verzeichnisses ist.
(Neben mod_rewrite schliesst diese Betrachtung des "simpelsten" Falles auch Aliase etc. aus. Ich beziehe mich auf die reine Übersetzung eines Request auf physisch vorhandene Dateien und Verzeichnisse im Document Root.)
MfG ChrisB
--
Light travels faster than sound - that's why most people appear bright until you hear them speak.
Der folgende Beitrag wurde am 01. 10. 2009, 15:57 Uhr von dedlfix veröffentlicht.
Hi!
> > Jein. Man kann ja den Request mit mod_rewrite derart zu einem Dokument umschreiben, dass der gesamte Path-Teil als PathInfo zur Verfügung steht.
> Natürlich kannst du mod_rewrite hinzunehmen - dann brauchst du auch nicht mehr die Umgebungsvariable PATH_INFO, sondern kannst dir alles interessante auch in GET-Parametern zur Verfügung stellen lassen.
Kann man, muss man aber nicht. Dann hat man die GET-Parameter komplett frei für eine anderweitige Verfügung. Eigentlich braucht man PATH_INFO in dem Fall gar nicht, weil die Information bereits in REQUEST_URI steht (wenn man den Querystring entfernt).
> Ich bezog mich *nur* auf PATH_INFO, wenn man auf mod_rewrite verzichten will oder es nicht zur Verfügung hat.
Das war mir schon klar, aber diese Beschränkung muss man sich ja ohne Grund nicht selbst auferlegen.
Lo!
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4