Sessions beim Einbinden externer Inhalte in einen Frameset
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
- die Site Zugang zu den eigenen Kontaktdaten gewährt (CAO),
- dass erhobene Daten nur mit der Online-Identität und nicht mit der tatsächlichen Person in Verbindung gebracht werden (PSA),
- 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!)