Sessions beim Einbinden externer Inhalte in einen Frameset

Der Internet Explorer setzt keine Session-Cookies beim Aufruf von Dateien in Framesets über Domänengrenzen. Dieses Problem kann man verhindern.

Aufgabe

Eine (statische) Seite bindet externen, dynamischen Content in einem Frameset ein. Die eingebundenen Seiten verwenden Sessions, um die Programmlogik zu verwirklichen (z.B. Login).

Problem

Im Firefox funktioniert alles problemlos. Nur Benutzer mit dem Microsoft® Internet Explorer können keine Session aufrecht erhalten. Der Session-Cookie wird offenbar nicht gesetzt.

Ursache

Microsoft hat für die Version 6 einen Sicherheitsmechanismus eingeführt, der beim Einbinden externer Inhalte ab der Sicherheitsstufe "mittel" den Cookie ohne Rückmeldung abweist, wenn keine Datenschutzrichtlinie nach P3P Standard (Platform for Privacy Preferences) vorliegt.

Lösung

Setzen Sie auf allen eingebundenen Seiten den HTTP-Header "P3P" umittelbar nach dem Setzen des Session-Cookies so:

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

Erläuterung

Durch den Header P3P: CP="CAO PSA OUR" wird kommuniziert, dass

  1. die Site Zugang zu den eigenen Kontaktdaten gewährt (CAO),
  2. dass erhobene Daten nur mit der Online-Identität und nicht mit der tatsächlichen Person in Verbindung gebracht werden (PSA),
  3. und dass die Daten nicht an Dritte weitergegeben werden (OUR).

(Diese Behauptungen werden im Übrigen so hingenommen; gegenwärtig gibt es keinerlei Mechanismus zur Überprüfung ihrer Authentizität!)

Links