web-dev-qa-db-fra.com

Cookie bloqué / non enregistré dans IFRAME dans Internet Explorer

J'ai deux sites Web, disons qu'ils sont example.com et anotherexample.net. Sur anotherexample.net/page.html, j'ai un IFRAME SRC="http://example.com/someform.asp". Cet IFRAME affiche un formulaire que l'utilisateur doit remplir et envoyer à http://example.com/process.asp. Lorsque j'ouvre le formulaire ("someform.asp") dans sa propre fenêtre de navigateur, tout fonctionne correctement. Cependant, lorsque je charge someform.asp en tant que IFRAME dans IE 6 ou IE 7, les cookies de example.com ne sont pas enregistrés. . Dans Firefox, ce problème n'apparaît pas.

À des fins de test, j'ai créé une configuration similaire sur http://newmoon.wz.cz/test/page.php .

example.com utilise des sessions basées sur des cookies (et je ne peux rien y faire), donc sans cookies, process.asp ne sera pas exécuté. Comment puis-je forcer IE à enregistrer ces cookies?

Résultats de l'analyse du trafic HTTP: dans la réponse GET /someform.asp, il existe un en-tête Set-Cookie par session valide (par exemple, Set-Cookie: ASPKSJIUIUGF=JKHJUHVGFYTTYFY), mais sur la demande POST /process.asp, il Il n'y a pas d'en-tête de cookie du tout.

Edit3: certains scripts AJAX + à côté du serveur sont apparemment capables de contourner le problème, mais cela ressemble beaucoup à un bogue, et cela ouvre une nouvelle série de trous de sécurité . Je ne veux pas que mes applications utilisent une combinaison bug/trou de sécurité simplement parce que c'est facile.

Edit: la politique P3P était la cause première , explication complète ci-dessous.

390
Piskvor

Je me suis mis au travail, mais la solution est un peu complexe, alors supportez-moi.

Que ce passe-t-il

Dans l'état actuel des choses, Internet Explorer accorde un niveau de confiance moindre aux pages IFRAME (IE appelle ce contenu "tiers"). Si la page à l'intérieur de l'IFRAME ne possède pas de politique de confidentialité, ses cookies sont bloqués (ce qui est indiqué par l'icône en forme d'œil dans la barre d'état. Lorsque vous cliquez dessus, une liste d'URL bloquées s'affiche).

the evil eye
(source: piskvor.org )

Dans ce cas, lorsque les cookies sont bloqués, l'identificateur de session n'est pas envoyé et le script cible génère une erreur "session introuvable".

(J'ai essayé de définir l'identifiant de session dans le formulaire et de le charger à partir de POST variables. Cela aurait fonctionné , mais pour raisons politiques que je ne pouvais pas faire.)

Il est possible de rendre la page de l’IFRAME plus fiable: si la page intérieure envoie un en-tête P3P avec une politique de confidentialité 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 du W3C . Je l'ai parcourue, j'ai téléchargé Editeur de règles de confidentialité IBM et j'ai créé une représentation de la politique de confidentialité et lui ai donné un nom. (Ici _ policy1).

NOTE: à ce stade, vous devez réellement savoir si votre site dispose d'une politique de confidentialité et, dans le cas contraire, la créer - si elle collecte données utilisateur, quel type de données, ce qu’il en fait, qui y a accès, etc. Vous devez trouver cette information et penser à ce sujet. Le simple fait de claquer quelques balises ensemble ne la coupera pas. Cette étape ne peut pas être réalisée uniquement dans un logiciel et peut être hautement politique (par exemple, "devrions-nous vendre notre cliquez sur les statistiques? ").

(par exemple, "le site est exploité par ACME Ltd., il utilise des identificateurs anonymes par session pour son fonctionnement, ne collecte des données utilisateur que si cela est explicitement autorisé et aux seules fins suivantes, les données ne sont stockées que le temps nécessaire, uniquement par notre société. y a accès, etc. etc. ").

(Lors de l'édition avec cet outil, il est possible d'afficher les erreurs/omissions dans la stratégie. L'onglet "Stratégie HTML" est également très utile: en bas, il comporte une "évaluation de la stratégie" - une vérification rapide du blocage de la stratégie. par les paramètres par défaut d'IE)

L'éditeur exporte vers un fichier .p3p, qui est une représentation XML de la stratégie ci-dessus. En outre, il peut exporter une "version compacte" de cette politique.

Lien vers la politique

Ensuite, un fichier de référence de stratégie (http://example.com/w3c/p3p.xml) était nécessaire (index des stratégies 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 <INCLUDE> montre tous les URI qui utiliseront cette politique (dans mon cas, le site entier). Le fichier de règles que j'ai exporté à partir de l'éditeur a été chargé sur http://example.com/w3c/example-com.p3p

Envoyer l'en-tête compact avec les réponses

J'ai configuré le serveur Web à example.com pour qu'il envoie l'en-tête compact avec les réponses suivantes:

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 par rapport au fichier de référence de politique (qui à son tour fait référence aux politiques de confidentialité), CP est la représentation compacte de politique. Notez que la combinaison des en-têtes P3P dans l'exemple peut ne pas être applicable sur votre site Web spécifique; vos en-têtes P3P DOIVENT sincèrement représenter votre propre politique de confidentialité!

Profit!

Dans cette configuration, Evil Eye n'apparaît pas, les cookies sont enregistrés même dans IFRAME et l'application fonctionne.

Edit: Ce qu'il ne faut PAS faire, à moins que vous n'aimiez vous défendre des poursuites judiciaires

Plusieurs personnes ont suggéré de "glisser quelques balises dans l'en-tête de votre P3P, jusqu'à ce que le mauvais œil abandonne".

Les balises ne sont pas seulement un tas de bits, elles ont la signification du monde réel et leur utilisation vous donne le monde réel. responsabilités !

Par exemple, prétendre que vous ne collectez jamais de données utilisateur peut rendre le navigateur heureux, mais si vous collectez réellement des données utilisateur, le P3P entre en conflit avec la réalité. Clair et simple, vous mentez délibérément à vos utilisateurs , et cela pourrait constituer un comportement criminel dans certains pays. Dans "Allez en prison, ne collectez pas 200 $".

Quelques exemples ( voir p3pwriter pour le jeu complet de tags ):

  • NOI: "Le site Web n'a pas collecté de données identifiées." (dès qu’il y a une personnalisation, un login ou une collecte de données (***** Analytics, n'importe qui?), vous devez l’accuser de le reconnaître. votre P3P)
  • STP: Les informations sont conservées pour répondre à l'objectif déclaré. Cela nécessite que les informations soient éliminées le plus tôt possible. Les sites DOIVENT avoir une politique de rétention qui établit un horaire de destruction. La politique de rétention DOIT être incluse ou liée à la politique de confidentialité lisible par l'homme du site. "(Ainsi, si vous envoyez STP mais que vous n'avez pas de politique de rétention, vous pouvez commettre des fraudes, c'est cool, pas du tout.)

Je ne suis pas avocat, mais je ne suis pas disposé à aller au tribunal pour voir si l'en-tête P3P est vraiment juridiquement contraignant ou si vous pouvez promettre quelque chose à vos utilisateurs sans réellement le vouloir. honorer vos promesses.

427
Piskvor

J'ai passé une grande partie de ma journée à examiner cette question de P3P et je ressens le besoin de partager ce que j'ai découvert.

J'ai remarqué que le concept P3P est très obsolète et ne semble être vraiment utilisé/appliqué que par Internet Explorer (IE).

L'explication la plus simple est: IE veut que vous définissiez un en-tête P3P si vous utilisez des cookies.

C'est une bonne idée, et heureusement, la plupart du temps, ne pas fournir cet en-tête ne posera pas de problème (lisez les avertissements du navigateur). À moins que votre site Web/application Web ne soit chargé sur un autre site Web à l'aide d'un (i) Frame. C’est là que IE devient une douleur énorme dans la ***. Cela ne vous permettra pas de définir un cookie si l'en-tête P3P n'est pas défini.

Sachant cela, je voulais trouver une réponse aux deux questions suivantes:

  1. On s'en fout? En d'autres termes, puis-je être poursuivi en justice si je mets le mot "Pomme de terre" dans l'en-tête?
  2. Que font les autres entreprises?

Mes découvertes sont:

  1. Personne ne s'y intéresse. Je suis incapable de trouver un seul document suggérant que cette technologie a un poids juridique. Pendant mes recherches, je n'ai trouvé aucun pays dans le monde qui ait adopté une loi qui vous empêche de mettre le mot "pomme de terre" dans l'en-tête P3P.
  2. Tant Google que Facebook ont ​​mis un lien dans leur champ d’en-tête P3P faisant référence à une page décrivant pourquoi ils n’ont pas d’en-tête P3P.

Le concept est né en 2002 et cela me laisse perplexe de penser que ce concept obsolète et non appliqué juridiquement est toujours imposé aux développeurs au sein d'IE. Si cet en-tête n'a pas de ramifications légales, cet en-tête doit être ignoré (ou générer un avertissement ou une notification dans la console). Non imposé! Je suis maintenant obligé de mettre une ligne dans mon code (et d'envoyer un en-tête au client) qui ne fait absolument rien.

En bref - pour que IE soit heureux - ajoutez la ligne suivante à votre code PHP (les autres langues devraient se ressembler)

header('P3P: CP="Potato"');

Problème résolu, et IE est satisfait de cette pomme de terre.

165
Ruben

J'ai réussi à faire disparaître le mauvais œil en ajoutant simplement ce petit en-tête au site dans IFrame (solution PHP):

header('P3P: CP="NOI ADM DEV COM NAV OUR STP"');

N'oubliez pas d'appuyer sur les touches ctrl + F5 pour recharger votre site. Sinon, l'Explorateur peut toujours afficher le mauvais œil, même s'il fonctionne bien. C'est probablement la raison principale pour laquelle j'ai eu tant de problèmes à le faire fonctionner.

Aucun fichier de politique n'était nécessaire du tout.

Edit: J'ai trouvé une entrée de blog Nice qui explique le problème avec les cookies dans IFrames. Il a également une solution rapide dans le code C #: cadres, pages ASPX et cookies rejetés

55
Helo

Ceci est enterré dans les commentaires d'autres réponses, mais cela m'a presque manqué, donc il semble que cela mérite sa propre réponse.

Pour vérifier: pour que IE accepte les cookies tiers, vous devez présenter vos fichiers avec un en-tête http appelé p3p au format suivant:

CP="my compact p3p policy"

MAIS, p3p est pratiquement mort en tant que norme à ce stade et vous pouvez facilement obtenir IE travailler sans investir le temps et les ressources juridiques nécessaires à la création d'une véritable stratégie p3p. En effet, si votre en-tête de stratégie compacte p3p n’est pas valide, IE la traite en fait comme une bonne stratégie et accepte les cookies tiers. Vous pouvez donc utiliser un en-tête p3p tel que celui-ci

CP="This site does not have a p3p policy."

Vous pouvez éventuellement inclure un lien vers une page qui explique pourquoi vous ne disposez pas d'une stratégie p3p, contrairement à Google et à Facebook (ils pointent ici: https://support.google.com/accounts/answer/151657 et ici: https://www.facebook.com/help/327993273962160/ ).

Enfin, il est important de noter que tous les fichiers servis à partir du site tiers doivent avoir un en-tête p3p, et pas seulement celui qui définit le cookie, de sorte que vous ne pourrez peut-être pas le faire dans votre PHP, votre asp.net, etc. code. Vous êtes probablement mieux placé au niveau du serveur Web (c'est-à-dire dans IIS ou Apache).

21
David Hammond

J'avais aussi ce problème, car je pensais publier le code que j'avais utilisé dans mon projet MVC2. Faites attention lorsque dans le cycle de vie de la page, vous ajoutez l'en-tête ou vous obtenez une exception HttpException "le serveur ne peut pas ajouter d'en-tête après l'envoi des en-têtes HTTP." J'ai utilisé un ActionFilterAttribute personnalisé sur la méthode OnActionExecuting (appelée avant l'exécution de l'action).

/// <summary>
/// Privacy Preferences Project (P3P) serve a compact policy (a "p3p" HTTP header) for all requests
/// P3P provides a standard way for Web sites to communicate about their practices around the collection, 
/// use, and distribution of personal information. It's a machine-readable privacy policy that can be 
/// automatically fetched and viewed by users, and it can be tailored to fit your company's specific policies.
/// </summary>
/// <remarks>
/// More info http://www.oreillynet.com/lpt/a/1554
/// </remarks>
public class P3PAttribute : ActionFilterAttribute
{
    /// <summary>
    /// On Action Executing add a compact policy "p3p" HTTP header
    /// </summary>
    /// <param name="filterContext"></param>
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpContext.Current.Response.AddHeader("p3p","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");

        base.OnActionExecuting(filterContext);
    }
}

Exemple d'utilisation:

[P3P]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewData["Message"] = "Welcome!";

        return View();
    }

    public ActionResult About()
    {
        return View();
    }
}
20
daniellmb

C’est un excellent sujet, mais j’ai trouvé qu’un détail important (qui était au moins essentiel dans mon cas) et qui n’a pas été posté ici ou ailleurs (je suis désolé si je l’ai manqué) était que la ligne P3P devait être passé dans l'en-tête de TOUS LES fichiers envoyés par le serveur tiers, même les fichiers ne définissant pas ou n'utilisant pas les cookies tels que les fichiers Javascript ou les images. Sinon, les cookies seront bloqués. J'ai plus à ce sujet dans un post ici: http://posheika.net/?p=11

14
Juris

Si quelqu'un cherche une ligne Apache; nous avons utilisé celui-ci.

Ensemble d'en-têtes P3P "CP = \" Thanks IE8\""

Peu importait ce que nous définissions comme valeur de CP, tant qu'il y avait un en-tête P3P.

5
so_mv

Toute personne ayant ce problème dans node.js.

Ajoutez ensuite ce module p3p et activez ce module au niveau du middleware.

npm install p3p

J'utilise express alors je l'ajoute dans app.js

D'abord besoin de ce module dans app.js

var express = require('express');
var app = express();
var p3p = require('p3p');

puis l'utiliser comme middleware

app.use(p3p(p3p.recommended));

Il va ajouter des en-têtes p3p à l'objet res. Pas besoin de faire des choses supplémentaires.

Vous obtiendrez plus d'informations à:

https://github.com/troygoode/node-p3p

5
Harshal_m_joshi

Une chose possible à faire est d'ajouter le domaine aux sites autorisés dans les outils -> Options Internet -> Confidentialité -> Sites: somedomain.com -> Autoriser -> OK.

3
heikkim

This post fournit des commentaires sur P3P et une solution simplifiée qui réduit les problèmes avec IE7 et IE8.

J'enquêtais sur ce problème de connexion à l'aide des services de contrôle d'accès Azure, mais je ne pouvais pas me connecter.

Puis, tombé sur ce post https://blogs.msdn.Microsoft.com/ieinternals/2011/03/10/beware-cookie-sharing-in-cross-zone-scenarios/

En bref, IE ne partage pas les cookies entre les zones (par exemple, Internet et les sites de confiance).

Ainsi, si votre cible IFrame et votre page html se trouvent dans une zone P3P différente, cela ne vous aidera en rien.

3
Frode Nilsen

Une solution que je n'ai pas vue mentionnée ici consiste à utiliser stockage de session à la place des cookies. Bien sûr, cela pourrait ne pas convenir à tout le monde, mais dans certains cas, c'est une solution facile.

3
ripper234

J'ai déjà mis en place une politique P3P complète, mais je ne voulais plus avoir à passer à travers les complications pour un nouveau projet sur lequel je travaillais. J'ai trouvé ce lien utile pour une solution simple au problème, n'ayant à spécifier qu'une politique P3P compacte minimale de "CAO PSA OUR":

http://blog.sweetxml.org/2007/10/minimal-p3p-compact-policy-suggestion.html

L'article cite un lien (maintenant rompu) vers un article de Microsoft kb. La politique a fait le tour pour moi!

2
Joel Mitchell

Vous avez un problème similaire, je suis également allé à la façon de générer la politique P3P ce matin. Voici mon article sur la façon de générer votre propre politique et de l’utiliser sur le site Web :) http://everydayopenslikeaflower.blogspot.com/ 2009/08/how-to-create-p3p-policy-and-implementation.html

2
Ping

Vous pouvez également combiner les fichiers p3p.xml et policy.xml comme suit:

/home/ubuntu/sites/shared/w3c/p3p.xml

<META xmlns="http://www.w3.org/2002/01/P3Pv1">
  <POLICY-REFERENCES>
    <POLICY-REF about="#policy1">
      <INCLUDE>/</INCLUDE>
      <COOKIE-INCLUDE/>
    </POLICY-REF>
  </POLICY-REFERENCES>
  <POLICIES>
    <POLICY discuri="" name="policy1">
      <ENTITY>
        <DATA-GROUP>
          <DATA ref="#business.name"></DATA> 
          <DATA ref="#business.contact-info.online.email"></DATA> 
        </DATA-GROUP>
      </ENTITY>
      <ACCESS>
        <nonident/>
      </ACCESS>
      <!-- if the site has a dispute resolution procedure that it follows, a DISPUTES-GROUP should be included here -->
      <STATEMENT>
        <PURPOSE>
          <current/>
          <admin/>
          <develop/>
        </PURPOSE>
        <RECIPIENT>
          <ours/>
        </RECIPIENT>
        <RETENTION>
          <indefinitely/>
        </RETENTION>
        <DATA-GROUP>
          <DATA ref="#dynamic.clickstream"/>
          <DATA ref="#dynamic.http"/>
        </DATA-GROUP>
      </STATEMENT>
    </POLICY>
  </POLICIES>
</META>

J'ai trouvé le moyen le plus simple d'ajouter un en-tête est d'utiliser un proxy via Apache et d'utiliser mod_headers, en tant que tel:

<VirtualHost *:80>
  ServerName mydomain.com

  DocumentRoot /home/ubuntu/sites/shared/w3c/

  ProxyRequests off
  ProxyPass /w3c/ !
  ProxyPass / http://127.0.0.1:8080/
  ProxyPassReverse / http://127.0.0.1:8080/
  ProxyPreserveHost on

  Header add p3p 'P3P:policyref="/w3c/p3p.xml", CP="NID DSP ALL COR"'
</VirtualHost>

Nous envoyons donc un proxy à toutes les requêtes sauf celles vers /w3c/p3p.xml vers notre serveur d’applications.

Vous pouvez tout tester avec le validateur W3C

1
Kris

Je sais qu'il est un peu tard pour mettre ma contribution sur ce sujet, mais j'ai perdu tellement d'heures que cette réponse aidera peut-être quelqu'un.

J'essayais d'appeler un cookie tiers sur mon site et, bien sûr, cela ne fonctionnait pas sous Internet Explorer 10, même avec un niveau de sécurité bas ... ne me demandez pas pourquoi. Dans l'iframe, j'appelais un read_cookie.php (echo $ _COOKIE) avec ajax.

Et je ne sais pas pourquoi j'étais incapable de définir la politique P3P pour résoudre le problème ...

Pendant ma recherche, j'ai vu quelque chose sur le fonctionnement du cookie dans JSON. Je n'ai même pas essayé car je pensais que si le cookie ne passe pas par un iframe, il ne passera plus par un tableau ...

Devinez quoi, ça le fait! Donc, si vous json_encodez votre cookie puis décodez après votre demande ajax, vous l'obtiendrez!

Peut-être qu'il y a quelque chose qui m'a manqué et si je le faisais, toutes mes excuses, mais je n'ai jamais vu quelque chose d'aussi stupide. Bloquez les cookies tiers pour des raisons de sécurité, pourquoi pas, mais laissez-le passer s'il est codé? Où est la sécurité maintenant?

J'espère que ce post aidera quelqu'un et encore une fois, si j'ai raté quelque chose et que je suis idiot, éduquez-moi s'il vous plaît!

1
pierreaurelemartin

Si vous possédez le domaine à intégrer , vous pouvez, avant d'appeler la page contenant l'IFrame, effectuer une redirection vers ce domaine, ce qui créera: le cookie et la redirection, comme expliqué ici: http://www.mendoweb.be/blog/internet-Explorer-safari-third-party-cookie-problem/

Cela fonctionnera pour Internet Explorer mais également pour Safari (car Safari bloque également les cookies tiers).

1
Matthew

Cela a finalement fonctionné pour moi (après beaucoup de hâte et la génération de stratégies à l'aide du générateur de règles IBM). Vous pouvez télécharger le générateur de règles ici: http://www.softpedia.com/get/Security/Security-Related/P3P-Policy-Editor.shtml

Je ne pouvais plus télécharger le générateur depuis le site Web officiel d'IBM.

J'ai créé ces fichiers dans le dossier racine de mon Web-App

/index.php
/w3c/policy.html (Human readable format)
/w3c/p3p.xml
/w3c/policy.p3p
  1. Index.php: Envoyez juste un en-tête supplémentaire:
header('P3P: policyref="/w3c/p3p.xml", CP="ALL DSP NID CURa ADMa DEVa HISa OTPa OUR NOR NAV DEM"');
  1. Contenu de p3p.xml
<META>
    <POLICY-REFERENCES>
        <POLICY-REF about="/w3c/policy.p3p#App">
            <INCLUDE>/</INCLUDE>
            <COOKIE-INCLUDE/>
        </POLICY-REF>
    </POLICY-REFERENCES>
</META>
  1. Contenu de mon fichier policy.html
<html>
<head>
<STYLE type="text/css">
title { color: #3333FF}
</STYLE>
<title>Privacy Statement for YOUR COMPANY NAME</title>
</head>
<body>
<h1 class="title">Privacy Policy</h1>
<!-- "About Us" section of privacy policy -->
<h2>About Us</h2>
<p>This is a privacy policy for YOUR COMPANY NAME.
Our homepage on the Web is located at <a href="YOURWEBSITE">
YOURWEBSITE</a>.
The full text of our privacy policy is available on the Web at 
<a href="ABSOLUTE URL OF THIS FILE">
ABSOLUTE URL OF THIS FILE</a>
This policy does not tell users where they can go to exercise their opt-in or opt-out options.
<p>We invite you to contact us if you have questions about this policy.
You may contact us by mail at the following address:
<pre>FIRSTNAME LASTNAME
YOUR ADDRESS HERE
</pre>
<p>You may contact us by e-mail at 
<a href="mailto:[email protected]">
[email protected]</a>. 
You may call us at TELEPHONENUMBER.
<!-- "Privacy Seals" section of privacy policy -->
<h2>Dispute Resolution and Privacy Seals</h2>
<p>We have the following privacy seals and/or dispute resolution mechanisms.
If you think we have not followed our privacy policy in some way, they can help you resolve your concern.
<ul>
<li>
<b>Dispute</b>:
Contact us for further information
</ul>
<!-- "Additional information" section of privacy policy -->
<h2>Additional Information</h2>
<p>
This policy is valid for 1 day from the time that it is loaded by a client.
</p>
<!-- "Data Collection" section of privacy policy -->
<h2>Data Collection</h2>
<p>P3P policies declare the data they collect in groups (also referred to as "statements").
This policy contains 1 data group.
<hr width="50%" align="center">
<h3>Group "App control data"</h3>
<p>We collect the following information:
<ul>
<li>HTTP cookies</li>
</ul>
<p>This data will be used for the following purposes:</p>
<ul>
<li>Completion and support of the current activity.</li>
<li>Web site and system administration.</li>
<li>Research and development.</li>
<li>Historical preservation.</li>
<li>Other purposes<p>Control Flow of the application</p></li>
</ul>
<p>This data will be used by ourselves and our agents.
<p>The data in this group has been marked as non-identifiable. This means that there is no
reasonable way for the site to identify the individual person this data was collected from.
<p>The following explanation is provided for why this data is collected:</p>
<blockquote>This cookie data is only used to control the application within an iframe (e.g. a Facebook App)</blockquote>
<!-- "Use of Cookies" section of privacy policy -->
<hr width="50%" align="center">
<h2>Cookies</h2>
<p>Cookies are a technology which can be used to provide you with tailored information from a Web site. A cookie is an element of data that a Web site can send to your browser, which may then store it on your system. You can set your browser to notify you when you receive a cookie, giving you the chance to decide whether to accept it.
<p>Our site makes use of cookies.
Cookies are used for the following purposes:
<ul>
<li>Site administration
<li>Completing the user's current activity
<li>Research and development
<li>Other
(Control Flow of the application)
</ul>
<!-- "Compact Policy Explanation" section of privacy policy -->
<hr width="50%" align="center">
<h2>Compact Policy Summary</h2>
<p>The compact policy which corresponds to this policy is:
<pre>
    CP="ALL DSP NID CURa ADMa DEVa HISa OTPa OUR NOR NAV"
</pre>
<p>The following table explains the meaning of each field in the compact policy.
<center><table width="80%" border="1" cols="2">
<tr><td align="center" valign="top" width="20%"><b>Field</b></td><td align="center" valign="top" width="80%"><b>Meaning</b></td></tr>
<tr><td align="left" valign="top" width="20%"><tt>CP=</tt></td>
<td align="left" valign="top" width="80%">This is the compact policy header; it indicates that what follows is a P3P compact policy.</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>ALL</tt></td>
<td align="left" valign="top" width="80%">
Access to all collected information is available.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>DSP</tt></td>
<td align="left" valign="top" width="80%">
The policy contains at least one dispute-resolution mechanism.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>NID</tt></td>
<td align="left" valign="top" width="80%">
The information collected is not personally identifiable.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>CURa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for completion of the current activity.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>ADMa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for site administration.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>DEVa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for research and development.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>HISa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for historical archival purposes.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>OTPa</tt></td>
<td align="left" valign="top" width="80%">
The data is used for other purposes.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>OUR</tt></td>
<td align="left" valign="top" width="80%">
The data is given to ourselves and our agents.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>NOR</tt></td>
<td align="left" valign="top" width="80%">
The data is not kept beyond the current transaction.
</td></tr>
<tr><td align="left" valign="top" width="20%"><tt>NAV</tt></td>
<td align="left" valign="top" width="80%">
Navigation and clickstream data is collected.
</td></tr>
</table></center>
<p>The compact policy is sent by the Web server along with the cookies it describes.
For more information, see the P3P deployment guide at <a href="http://www.w3.org/TR/p3pdeployment">http://www.w3.org/TR/p3pdeployment</a>.
<!-- "Policy Evaluation" section of privacy policy -->
<hr width="50%" align="center">
<h2>Policy Evaluation</h2>
<p>Microsoft Internet Explorer 6 will evaluate this policy's compact policy whenever it is used with a cookie.
The actions IE will take depend on what privacy level the user has selected in their browser (Low, Medium, Medium High, or High; the default is Medium.
In addition, IE will examine whether the cookie's policy is considered satisfactory or unsatisfactory, whether the cookie is a session cookie or a persistent cookie, and whether the cookie is used in a first-party or third-party context.
This section will attempt to evaluate this policy's compact policy against Microsoft's stated behavior for IE6.
<p><b>Note:</b> this evaluation is currently experimental and should not be considered a substitute for testing with a real Web browser.
<p><b>Satisfactory policy</b>: this compact policy is considered <em>satisfactory</em> according to the rules defined by Internet Explorer 6.
IE6 will accept cookies accompanied by this policy under the High, Medium High, Medium, Low, and Accept All Cookies settings.
</body></html>
  1. Contenu de policy.p3p
<?xml version="1.0"?>
<POLICIES xmlns="http://www.w3.org/2002/01/P3Pv1">
    <!-- Generated by IBM P3P Policy Editor version Beta 1.12 built 2/27/04 1:19 PM -->

    <!-- Expiry information for this policy -->
    <EXPIRY max-age="86400"/>

<POLICY
    name="App"
    discuri="ABSOLUTE URL TO policy.html"
    xml:lang="de">
    <!-- Description of the entity making this policy statement. -->
    <ENTITY>
    <DATA-GROUP>
<DATA ref="#business.name">COMPANY NAME</DATA>
<DATA ref="#business.contact-info.online.email">[email protected]</DATA>
<DATA ref="#business.contact-info.online.uri">YOURWEBSITE</DATA>
<DATA ref="#business.contact-info.telecom.telephone.number">YOURPHONENUMBER</DATA>
<DATA ref="#business.contact-info.postal.organization">FIRSTNAME LASTNAME</DATA>
<DATA ref="#business.contact-info.postal.street">STREET</DATA>
<DATA ref="#business.contact-info.postal.city">CITY</DATA>
<DATA ref="#business.contact-info.postal.stateprov">STAGE</DATA>
<DATA ref="#business.contact-info.postal.postalcode">POSTALCODE</DATA>
<DATA ref="#business.contact-info.postal.country">Germany</DATA>
    </DATA-GROUP>
    </ENTITY>

    <!-- Disclosure -->
    <ACCESS><all/></ACCESS>


    <!-- Disputes -->
    <DISPUTES-GROUP>
        <DISPUTES resolution-type="service" service="YOURWEBSITE CONTACT FORM" short-description="Dispute">
            <LONG-DESCRIPTION>Contact us for further information</LONG-DESCRIPTION>
    <!-- No remedies specified -->
        </DISPUTES>
    </DISPUTES-GROUP>

    <!-- Statement for group "App control data" -->
    <STATEMENT>
        <EXTENSION optional="yes">
            <GROUP-INFO xmlns="http://www.software.ibm.com/P3P/editor/extension-1.0.html" name="App control data"/>
        </EXTENSION>

    <!-- Consequence -->
    <CONSEQUENCE>
This cookie data is only used to control the application within an iframe (e.g. a Facebook App)</CONSEQUENCE>

    <!-- Data in this statement is marked as being non-identifiable -->
    <NON-IDENTIFIABLE/>

    <!-- Use (purpose) -->
    <PURPOSE><admin/><current/><develop/><historical/><other-purpose>Control Flow of the application</other-purpose></PURPOSE>

    <!-- Recipients -->
    <RECIPIENT><ours/></RECIPIENT>

    <!-- Retention -->
    <RETENTION><no-retention/></RETENTION>

    <!-- Base dataschema elements. -->
    <DATA-GROUP>
    <DATA ref="#dynamic.cookies"><CATEGORIES><navigation/></CATEGORIES></DATA>
    </DATA-GROUP>
</STATEMENT>

<!-- End of policy -->
</POLICY>
</POLICIES>
1
Sebastian Buckpesch

Pour tous ceux qui souhaitent que la stratégie P3P Compact fonctionne avec du contenu statique:

Il est seulement possible si vous pouvez envoyer des en-têtes de réponse côté serveur personnalisés avec le contenu statique.

Pour une explication plus détaillée, voir ma réponse ici: Définir le code P3P en HTML

0
Sly_cardinal

Dans Rails 3.2, j'utilise:

class ApplicationController < ActionController::Base  

  before_filter :set_p3p  

  private  
    # for IE session cookies thru iframe  
    def set_p3p  
      headers['P3P'] = 'CP="ALL DSP COR CURa ADMa DEVa OUR IND COM NAV"'  
    end  
end  

Je l'ai eu de: http://dot-net-web-developer-bristol.blogspot.com/2012/04/setting-p3p-header-in-Rails-session.html

0
Aaron Mills

Dans Rails, j'utilise cette gemme: https://github.com/merchii/rack-iframe Bawically, elle définit un ensemble d'abréviations sans fichier de référence: https://github.com/merchii/rack-iframe/blob/master/lib/rack/iframe.rb#L8

Il est facile à installer lorsque vous ne vous souciez pas du tout de la signification des choses p3p.

0
mojovski