PHP Session geht im IFrame unter Internet Explorer verloren

31. Januar 2011  |  Kommentar schreiben   |  Tags: , , ,



Bei Facebook teilen

Sicherlich haben Sie versucht über ein IFrame verschiedene Inhalte auf Ihrer Seite einzubinden. Diese Inhalte generieren so genannte PHP Sessions, um verschiedene Daten während des Aufenthaltes zu behalten, unter anderem Login Cookies. Jedoch funktioniert das tadeloss nur unter allen Browser außer Internet Explorer, egal ob Sie das Ziel über HTTP oder HTTPS einbinden. Insbesondere wenn die Domains des Ziels und die Hauptseite, die das IFrame enthält, unterschiedlich sind. Auch wenn Sie die Session über die session_id von der Oberseite zum IFrame übertragen, geht sie verloren.

Problematik

Die PHP Session wird, auch wenn ordnunngsgemäß erstellt, nach dem Aufruf verloren. Sie geht ja nicht einfach verloren, sondern der Explorer löscht diese oder richtiger gesagt, akzeptiert diese nicht aus Sicherheitsgründen. Unter Safari und Mozilla liegt das Problem nicht vor. Interessant ist, dass die Session-variable erstellt wird, sie bekommen keine Meldung, dass die Session nicht gestartet ist oder sonstiges, sondern der Wert ist einfach komplett leer. Wenn Sie den Inhalt außerhalb des IFrames aufrufen, so funktioniert die Session problemlos.

Hintergrund der Problematik

Aus Sicherheitsgründen lehnt Internet Explorer das Anlegen der Session Cookie ab, egal wie Sie die Session starten lassen (entweder mit session_start() oder die Session wird durch Konfiguration automatisch gestartet). Microsoft sagt, dass die obere Seite diese Session missbrauchen könnte und deswegen wird sie nicht erstellt.

Lösung

Um dieses Problem umzugehen, müssen Sie eine P3P PHP header-Anweisung implementieren, die in Worten sagt, dass die Tatsache, dass die Oberseite Zugriff bekommen hat, wird nicht missbraucht. Diese müssen Sie in die PHP Datei hineinprogrammieren, die im IFrame angezeigt wird:

<?php header('P3P: CP="CAO PSA OUR"'); ?>

Diese Zeile muss überall rein, wo Sie Ihre Session-Cookies erzeugen. Die P3P Headers sind eine Art Fine-Tuning der Datenschutzbestimmungen, die Sie lokal auf Ihrem Browser eingestellt haben und die informieren den Browser, wie er sich verhalten soll, wenn bestimmte Probleme wir das von beschriebene auftauchen.

Sie kommen selber nicht weiter?

Keine Sorge, wir sind für Sie da. Rufen Sie uns an oder schicken Sie uns eine Anfrage, wir helfen Ihnen weiter.

Teilen

Hinterlasse eine Antwort

Du musst angemeldet sein, um einen Kommentar abzugeben.