2011-01-04 7 views
0

Ich entwickle einen Warenkorb, der zum Beispiel Captcha verwendet, um zu validieren, dass ein Benutzer Mensch ist. Wenn eine falsche Vorlage empfangen wird der Benutzer durchHeader Redirect und Aufrechterhaltung einer Sitzung sowie Sicherheit

<?php header('Location:https://mysite.com/cart.php?PHPSESSID=mysessionid'); ?> 

Leider zur ursprünglichen Validierung Seite umgeleitet wird, wenn ich mich nicht die Session-ID in der URL senden verliere all meine Session-Daten in der Seite und rufe session_start () initiiere eine neue Sitzung. Es scheint, dass dies in PHP der einzige Weg ist, dies zu tun. Ich denke, dass diese Methode ein wenig unsicher ist, da jeder Benutzer eine Sitzung entführen könnte, indem er die URL verwendet und die Session-ID verwendet, die er erhalten hat. Dies könnte dadurch geschehen, dass der Benutzer meine Seite verlässt und die oben genannte URL als die verweisende Seite in welcher Seite auch immer angezeigt wird. Gibt es eine bessere Möglichkeit, diese Variable zu verbergen? Es scheint ein furchtbar großes Risiko zu sein, dass diese Information im Freien verfügbar ist und ein Medium, um die gleichen Räume zu entführen. Danke fürs Lesen!

+1

Sie verwenden also keine Cookies für die Sitzungs-ID? – Gumbo

+0

Dies tritt normalerweise auf, wenn Ihr Browser keine Cookies akzeptiert (möglicherweise für diese bestimmte Site) oder Session-Cookies deaktiviert sind. Anyway: Die korrekte Schreibweise für _every_ header ist 'Name = Wert' und nicht' Name: Wert'. – KingCrunch

+0

@KingCrunch: Nein, die [header field syntax] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2) ist eigentlich 'feldname ':" [field-value ] 'while * field-value * kann Whitespace vorangestellt werden. – Gumbo

Antwort

2

Normalerweise werden PHP-Sitzungen von einem HTTP-Cookie neu initialisiert, das der Browser zusammen mit der ersten Anfrage sendet.

Solange der Sitzungscookie gültig bleibt und gesendet wird, kann der Benutzer den Browser auf jeder beliebigen Seite frei leiten und die Sitzung bei der Rückkehr neu initialisieren.

Wenn die Sitzung nicht neu initialisiert wird, wäre es ein guter Ort, um herauszufinden, "warum?".

Verwandte Themen