J'ai réussi à le faire fonctionner, mais la solution est un peu complexe, alors soyez indulgent avec moi.
Ce qui se passe
En l'état actuel des choses, Internet Explorer accorde un niveau de confiance inférieur aux pages IFRAME (IE appelle ce contenu "tiers"). Si la page à l'intérieur de l'IFRAME n'a pas de politique de confidentialité, ses cookies sont bloqués (ce qui est indiqué par l'icône de l'œil dans la barre d'état, lorsque vous cliquez dessus, il vous montre une liste d'URL bloquées).
![the evil eye]()
(source : <a href="http://stuff.piskvor.org/cookies_blocked_MSIE_eye.png" rel="noreferrer">piskvor.org </a>)
Dans ce cas, lorsque les cookies sont bloqués, l'identifiant de session n'est pas envoyé, et le script cible lance une erreur 'session non trouvée'.
(J'ai essayé de définir l'identifiant de session dans le formulaire et de le charger à partir des variables POST. Cela aurait fonctionné mais pour des raisons politiques, je n'ai pas pu le faire).
Il est possible de rendre la page à l'intérieur du IFRAME plus fiable : si la page intérieure envoie un en-tête P3P avec une politique de confidentialité qui est acceptable pour IE, les cookies seront acceptés. .
Comment le résoudre
Créer une politique p3p
Un bon point de départ est le Tutoriel W3C . Je l'ai parcouru, j'ai téléchargé les Rédacteur de la politique de confidentialité d'IBM et là, j'ai créé une représentation de la politique de confidentialité et lui ai donné un nom pour la référencer (ici, c'était policy1
).
NOTE La politique de confidentialité : à ce stade, vous devez déterminer si votre site dispose d'une politique de confidentialité et, si ce n'est pas le cas, en créer une - si elle collecte des données sur les utilisateurs, quel type de données, ce qu'elle en fait, qui y a accès, etc. Vous devez trouver ces informations et pensez à à ce sujet. Il ne suffit pas de coller quelques étiquettes. Cette étape ne peut pas être réalisée uniquement par logiciel et peut être hautement politique (par exemple, "devons-nous vendre nos statistiques de clics ?").
(par exemple : "le site est exploité par ACME Ltd, il utilise des identifiants anonymes par session pour son fonctionnement, ne collecte les données des utilisateurs que si cela est explicitement autorisé et uniquement aux fins suivantes, les données ne sont conservées que le temps nécessaire, seule notre société y a accès, etc. etc.)
(Lors de l'édition avec cet outil, il est possible de visualiser les erreurs/omissions dans la politique. L'onglet "Politique HTML" est également très utile : en bas, il y a une "évaluation de la politique" - une vérification rapide si la politique sera bloquée par les paramètres par défaut d'IE).
L'éditeur exporte vers un fichier .p3p, qui est une représentation XML de la politique ci-dessus. Il peut également exporter une "version compacte" de cette politique.
Lien vers la politique
Ensuite, un fichier de référence de politique ( http://example.com/w3c/p3p.xml
) était nécessaire (un index des politiques de confidentialité utilisées par le site) :
<META>
<POLICY-REFERENCES>
<POLICY-REF about="/w3c/example-com.p3p#policy1">
<INCLUDE>/</INCLUDE>
<COOKIE-INCLUDE/>
</POLICY-REF>
</POLICY-REFERENCES>
</META>
Le site <INCLUDE>
montre tous les URIs qui utiliseront cette politique (dans mon cas, le site entier). Le fichier de stratégie que j'ai exporté de l'éditeur a été téléchargé dans le répertoire http://example.com/w3c/example-com.p3p
Envoyer l'en-tête compact avec les réponses
J'ai configuré le serveur Web de example.com pour qu'il envoie l'en-tête compact avec les réponses, comme ceci :
HTTP/1.1 200 OK
P3P: policyref="/w3c/p3p.xml", CP="IDC DSP COR IVAi IVDi OUR TST"
// ... other headers and content
policyref
est un URI relatif au fichier de référence de la politique (qui à son tour référence les politiques de confidentialité), CP
est la représentation compacte de la politique. Notez que la combinaison des en-têtes P3P dans l'exemple peut ne pas être applicable à votre site web spécifique ; vos en-têtes P3P DOIVENT représenter fidèlement votre propre politique de confidentialité !
Profit !
Dans cette configuration, le mauvais œil n'apparaît pas, les cookies sont sauvegardés même dans l'IFRAME, et l'application fonctionne.
Edit : Ce qu'il ne faut PAS faire, sauf si vous aimez vous défendre contre les poursuites judiciaires
Plusieurs personnes ont suggéré de "coller quelques balises dans votre en-tête P3P, jusqu'à ce que le mauvais œil abandonne".
Les étiquettes ne sont pas seulement un tas de bits, elles ont les significations du monde réel et leur utilisation vous donne responsabilités dans le monde réel !
Par exemple, prétendre que vous ne collectez jamais de données sur les utilisateurs peut rendre le navigateur heureux, mais si vous collectez réellement des données sur les utilisateurs, le P3P est en conflit avec la réalité. C'est aussi simple que cela, vous mentez délibérément à vos utilisateurs et cela pourrait être un comportement criminel dans certains pays. Comme dans "allez en prison, ne touchez pas 200 dollars".
Quelques exemples ( voir p3pwriter pour le jeu complet de balises ) :
-
NOI : "Le site Web ne collecte pas de données identifiées." (dès qu'il y a une personnalisation, un login, ou une collecte de données (***** Analytics, anyone ?), vous doit le reconnaître dans votre P3P)
-
STP : L'information est conservée pour répondre à l'objectif fixé. Cela signifie que les informations doivent être éliminées le plus tôt possible. Les sites DOIVENT avoir une politique de conservation qui établit un calendrier de destruction. La politique de conservation DOIT être incluse dans la politique de confidentialité lisible par l'homme du site ou être liée à celle-ci." (donc si vous envoyez
STP
mais n'ont pas de politique de rétention, vous mai commettre une fraude. C'est pas cool ça ? Pas du tout.)
Je ne suis pas un avocat, mais je ne suis pas prêt à aller au tribunal pour voir si l'en-tête P3P est vraiment légalement contraignant ou si vous pouvez promettre n'importe quoi à vos utilisateurs sans vouloir réellement honorer vos promesses.
0 votes
Une bonne solution en effet ... j'ai essayé de créer la politique de confidentialité ... ajouté à mon Root contexte ... et dans ma page jsp je suis la mise en place de l'en-tête ... toujours pas en mesure de se débarrasser de cet œil rouge ... pouvez-vous m'aider à résoudre le problème ...
0 votes
Merci pour le site de démonstration @Piskvor, je l'ai référencé ici sur ce post de Security.SE qui liste les sites web avec des tests de navigateur interactifs
0 votes
@makerofthings7 : YW. Je vais la migrer vers un site non temporaire (sic !) et je vais suggérer une modification sur Security.se, cette page était une preuve de concept un peu bricolée.
2 votes
N'essayez pas de faire fonctionner P3P sous Windows 10 / Internet Explorer 11 ( msdn.microsoft.com/fr/us/library/ ). Le P3P ne fonctionne pas du tout, donc quoi que vous fassiez, les cookies ne seront pas stockés. Preuve ici aussi enhanceie.com/test/cookie