2011-01-14 8 views
0

Ich habe eine Website, die einen sicheren Bereich (https) und den Rest der Website, die http ist. Alles funktioniert wunderbar mit Sitzungsvariablen auf der HTTPS Seite der Dinge anmelden, und der gesicherte Bereich funktioniert wunderbar.PHP SESSION Variablen zwischen https und http

Mein Problem: Ich habe eine Schaltfläche "Anmelden/Registrieren" oben auf jeder http-Seite auf der Website. Ich möchte, dass dies den Login-Status widerspiegelt und auf "Abmelden" wechselt und auch einige andere eingeloggte Schaltflächen enthält, die einfach auf die https-Seiten umleiten. Ich versuche nicht, irgendwelche Daten oder andere geschützte Informationen auf den http-Seiten in irgendeiner Weise zu manipulieren.

In IE8 wird die von https erstellte Sitzungsvariable für die Anmeldung in http (auf der Startseite) erkannt und zeigt den alternativen Link "Abmelden" korrekt an. In allen anderen Browsern ist die Sitzungsvariable jedoch nicht in http vorhanden. Was ist der einfachste Weg, um dies zu beheben, ohne eine große Sicherheitslücke zu erzeugen? Oh, und die URLs sind die gleichen außer HTTP und HTTPS.

Antwort

1

Eine einfache Möglichkeit, dies zu tun, ist, dass die Schaltfläche clientseitig über ein Skript geladen wird, das eine HTTPS-URL anfordert, um festzustellen, ob der Benutzer angemeldet ist oder nicht Der HTML-Code dafür muss Teil der HTTP-Seite sein.

+0

Das klingt ideal, aber ich habe Probleme, es zu implementieren. Ich habe eine logincheck.php-Datei, die über https aufgerufen wird: und gibt den Login-Status zurück (aber keine vertraulichen Informationen). Ich habe versucht mit jquery load die Seite aufzurufen, es würde nicht funktionieren. Ich kann Daten mit cURL in PHP zurückgeben, aber das Skript gibt immer einen nicht eingeloggten Status zurück, selbst wenn ich eingeloggt bin. Wenn ich das logincheck-Skript direkt ausführe, ohne über cURL in HTTP aufgerufen zu werden, funktioniert es einwandfrei. Irgendwelche Ideen? –

+0

Verwenden Sie Firebug oder die Chrome-Entwicklertools, um sich die tatsächliche AJAX-Anfrage anzusehen, die gesendet wird, welche Cookies mitgeschickt werden usw., und welche Reaktion vorliegt. – Amber

1

Wenn Sie den Sitzungscookie sichern möchten, möchten Sie sicherstellen, dass der Browser den Cookie nur in HTTPS sendet. Daher ist jede Möglichkeit, den Login-Status über die HTTP-Kommunikation herauszufinden, unsicher.

I +1 die Lösung Bernstein gepostet.