[PHP 5]: Wie sicher funktioniert die Weiterleitung über den Header?

mr5

Banned
Registriert
Feb. 2005
Beiträge
1.041
Weiß einer von euch vielleicht wie sicher eine Weiterleitung per

header("refresh:0;url=http://www.xyz");

funktioniert?

Gibt es Browser die das nicht unterstützen, oder gibt es Sicherheitsoptionen wenn die aktiviert sind dass dann solch eine Weiterleitung nicht funktioniert?

Muss ja irgend wie so sein, sonst würden eigentlich nicht alle Webseiten bei einer Weiterleitung auch einen Link anbieten.

In meinen schlauen PHP 5 Büchern steht da nichts über Kompatibilität der header() Funktion.

Vielen Dank im Voraus für die Mühe einer Antwort...

Danke! :daumen:

Gruß
Stefan
 
Die Frage sollte eher lauten "Gibt es User-Agents die das nicht unterstützen", den Browser sind nicht die einzigen Kandidaten, die sich auf eine Site verirren können ;)

Der Refresh-Header wird deswegen so gut wie nie eingesetzt, weil er nicht im RFC 2616 (HTTP 1.1) vorkommt. Er wurde schlicht aus dem Standard gekegelt, womit seine Unterstützug durch die User-Agents nicht garantiert werden kann. Dagegen ist der Location-Header Teil von HTTP 1.1 und wird daher für Umleitungen per HTTP-Header eingesetzt.
Für die seltenen Fälle, daß ein User-Agent den Location-Header nicht auswertet, wird jedoch oft noch zusätzlich ein Link in den Response-Body eingefügt.

greetings, Keita
 
Keita ... :daumen: ... danke für Deine klasse Antworten!

Was für andere User-Agents gibt es denn noch ausser Browser eines Webseitenbesuchers? mhh... z.B. einen Spider einer Suchmaschine?

Wenn man den Location-Header ausschließlich für Browser benötigt und auf alle anderen User-Agents die es noch so gibt verzichten kann (z.B. in einem Passwortgeschützen Bereich der ja nur für Besucher zugänglich ist)- kann man sich dann sicher sein, dass sämtliche Browserversionen der neueren Generation (z.B ab Netscape 4,5 oder IE 5.0) über die header("refresh:0;url=http://www.xyz"); - Funktion sicher weitergeleitet werden?

Oder gibt es da ein paar bekannte Ausnahmen oder aktivierbare Browser-Sicherheitsfunktionen, die es unbedingt nötig machen zusätzlich einen Link im Body einzufügen?
 
Zuletzt bearbeitet:
Die beste Methode mich selbst von der Arbeit abzuhalten :D

Zu User-Agents zählt alles, was HTTP rudimentär implementiert hat und somit in der Lage ist auf die Site zuzugreifen, neben Browsern sind die von dir genannten Spider, Crawler, Robots usw. wohl die am häufigsten eingesetzten User-Agents.

Ich würde generell nicht den Refresh-Header, sondern den Location-Header nehmen:

PHP:
header('Location: http://example.org/foo/bar');

Die gängigen Browser düften zwar auch den Refresh-Header unterstützen, jedoch könnte sich die hier und da anzutreffende Option "Refresh unterbinden" auch auf einen Refresh mittels HTTP-Header auswirken, obwohl er eigentlich einen Refresh via META-Tag meint. Da der Weg über den META-Tag jedoch nur ein Subsitut für den HTTP-Header ist (daher der Bezeichner "http-equiv" = "HTTP equivalent") könnte er auch den Refresh-Header unterbinden.
Allerdings gibt es auch manchmal Optionen, um einen Location-Header zu unterbinden, auf der ganz sicheren Seite ist man also, wenn man eine Umleitung immer mit einem entsprechenden Link "begleitet". Dazu sollte man sich am besten eine Funktion schreiben, der man eine URL übergibt, diese bastelt sich daraus einen Location-Header und zusätzlich einen Link und man erspart sich so ein bißchen Tipparbeit.

greetings, Keita
 
Vieelen Dank Keita für die ausführliche Ausführung. :daumen:
 
Zurück
Oben