Version complète: sur le forum Webmaster Hub : Cookies et stratégie de confidentialité
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
ams51
Voilà mon problème :
j'ai un site qui a une iframe dans laquelle se trouve un second site (d'un domaine différent) dans ce second site je crée un cookie pour mémoriser une donnée mais IE Bloque ce cookie car il n'a pas de stratégie de confidentialité compacte.

Ma question est comment définir une stratégie compacte pour un cookie en PHP ??
Anonymus
Beaucoup de paramètres (tous) peuvent etre passés hors cookies.

Qu'entends tu par "stratégie compacte" ?

Anonymus.
ams51
D'après ce que j'ai compris il faut que le cookie soit compressé

Je cherche une solution sans cookie, ce sera plus propre et moins problématique
ams51
Pour ceux que ça interesse....

Si on veut creer un cookie à partir d'une page qui n'appartient pas au domaine en cours (par exemple via une iframe)

Il suffit de creer un fichier p3p.xml
CODE
<?xml version="1.0" encoding="UTF-8" ?>
<META xmlns="http://www.w3.org/2000/12/P3Pv1">
<POLICY-REFERENCES>
   <POLICY-REF about="/w3c/policy.xml">
     <INCLUDE>/*</INCLUDE>
     <COOKIE-INCLUDE>* * *</COOKIE-INCLUDE>      
   </POLICY-REF>
</POLICY-REFERENCES>
</META>


et pour la creation des cookies il faut rajouter un header :
CODE
header("P3P: policyref=\"http://www.mondomaine.com/p3p.xml\",CP=\"NON DSP COR CURa PSA PSD OUR BUS NAV STA\"");
setcookie("moncookie",$valeurducookie, time()+(3600*$nb_heures), "/", "mondomaine.com",0);


Avec ça le cookie se crée même si l'internaute est en protection haute sur IE

Pour info j'ai piqué le code de Xiti et j'ai validé avec cette page : http://www.yoyodesign.org/doc/w3c/p3p1/#compact_policies

Je n'ai pas eu le temps d'approfondir mais il est tard et j'ai sommeil wink.gif
Dan
Cette solution mérite d'être épinglée... je connais certains membres du Hub qui se sont cassé la tête avec les cookies "multi-domaines" :up:
ams51
c'est trop d'honneur... J'ai pompé le code de Xiti pour le XML et le header (Xiti met un cookies à son nom sur les sites sur lequel il est installé)

Je n'ai pas eu le temps de vérifier les paramètres : CP=\"NON DSP COR CURa PSA PSD OUR BUS NAV STA\" mais tout est bien expliqué chez yoyodesign.

donc merci à eux biggrin.gif
vonde
Bonjour,

j essaye effectivement de faire ce que vous avez dérit ..
mais ma question va peut être bête mais a quoi correspond exactement l'about qui est située dans le about ?
<POLICY-REF about="/w3c/policy.xml">
et est ce que le contenu du XML est tel quel ? ou il y a t il quelque chose a retoucher .. je veux parler des *

Merci beaucoup de votre aide
vonde
euh pardon je veux dire l'url située dans le about .. honte a moi whistling.gif
ams51
Comme j'avais programmé ça très rapidement sans vraiment comprendre ce que j'étais en train de faire, j'ai effectué quelques recherches...

l'élément element policy-ref est expliqué en théorie chez yoyodesign.

Le principe du P3P est clairement expliqué (vulgarisé) sur le site de Symantec

Et tu trouveras quelques exemples de fichier "w3c/policy.xml" sur Google

La création de site passe de plus en plus par une politique globale de sécurité, accessibilité etc... plein de normes à avaler en perspective huh.gif


Edit : pour le contenu du xml il n'y a rien à modifier... Tu fais un C/C et ça fonctionne.
vonde
Merci beaucoup de ta réponse ..
en fait effectivement ca marche tres bien .. mais il y a quand un souci .. smile.gif bah oui il y en a toujours tongue.gif
CODE
<POLICY-REFERENCES>
  <POLICY-REF about="/w3c/policy.xml">
    <COOKIE-INCLUDE name="*" value="*" domain="*" path="*"/>  
  </POLICY-REF>
</POLICY-REFERENCES>

apparemment la norme ne prend en compte qu un cookie de session c est a dire que si tu fais
setcookie("moncookie", "mavaleur", time()+3600*24*365*66,"", ".mondomaine.com");
bah le cookie expire a la fin de la session .. il ne tient pas compte du temps ..
tout ca parce que dans le cookie include y a pas de valeur expire ..

est ce que quelqu un connait un moyen de contourner ce petit problème ... tout de même un peu bloquant le souci

Merci beaucoup
piwaille
'Alut

me permet de relancer le débat puisque j'ai à peu près le même problème...

CITATION(ams51 @ 03 Jun 2004, 23:10)
Avec ça le cookie se crée même si l'internaute est en protection haute sur IE

Pour info j'ai piqué le code de Xiti et j'ai validé avec cette page : http://www.yoyodesign.org/doc/w3c/p3p1/#compact_policies

Je n'ai pas eu le temps d'approfondir mais il est tard et j'ai sommeil wink.gif
*



j'ai utilisé ton code (honteusement whistling.gif ) mais dans mon cas ça marche pas angry.gif (enfin si... mais à moitié seulement)

bon déjà le contexte : j'essaye de tracer mes visiteurs à des fins statistiques, pour connaitre leur parcours, leur fidélité... (un peu comme fait Xiti)
donc j'ai un site ouaib X sur lequel est installé l'appli, les BdD etc...
Soit un site Y audité par le site X (ben oui ... quand le site X audit le site X... ça marche wink.gif )
donc sur le site Y, j'ai un javascript qui appelle le code php de mon site X lequel pose le cookie et du coup ... ça marche pas trop (j'veux dire par là que certains IE6, ça marche, d'autre pas ... et pour IE5.5 ... pareil blink.gif )
j'ai essayé de dire que le cookie était posé par le domaine X ou par le domaine Y... c'est pareil
j'ai essayé 2 codes CP= ça marche pas mieux
j'ai essayé de poser le xml sur les deux sites

bref, je me perds un peu avec toutes les options... et en plus, j'ai vidé le stock d'aspirine de la maison wacko.gif
Si quelqu'un a réussi (ou peut m'envoyer par mp le code précis de Xiti rolleyes.gif ) ça me dépannerais beaucoup :up:
piwaille
Bonjour

pas moyen de modifier le message alors de réponds...
en fait j'avais un chti bug dans mon code ailleurs ... donc la conséquence était de me faire croire que le cookie ne marhait pas.

En fait, il y a un truc zarbi c'est que le print_r laisse croire que le navigateur n'acceptera pas le cookie... et puis finalement le cookie est accepté et lu la fois suivante...

Si vous pouviez me filer un petit conseil soit sur l'utilisation du print_r soit une autre méhode pour (bien) savoir si le cookie a été accepté

Merci d'avance
genmin
boujour à vous, moi je n'arrive pas à faire fonctionner ce script. je m'explique, j'ai un site A sur lequel j'ai un caddie, j'ai rajouter une section qui elle est sur le site B et lorsque je rajoute un article à mon caddie, il me créer un nouveau cookie car pas le meme domaine. Maintenant j'ai mis le p3p.hml sur le site A et j'ai rajouté le header(...) et setcookie(...) dans une page de mon site B. Ben maintenant j'ai plus du tout de cookie créé à partir du site B ????? IMSTP6.gif

si quelqu'un peu m'aider merci d'avance wacko.gif
Maxim
Petit up car j'aimerai pouvoir utiliser des cookies multidomaines.

1:
Déjà, l'astuce marche-t'elle mm sous firefox ?
Et comment la mettre en place pour poser un cookie via php ?
car j'avoue ne pas voir...

2:
Peut-on poser plusieurs cookies pour differents domaines ?
echangiste
Merci ams51, c'est vrai trop puissant ce que tu as posté. Ca fait une semaine que je cherche.

J'ai fait différents tests sous IE et sous FireFox. Il ne détruit pas la session même après fermeture du navigateur.

Tout fonctionne correctement. C'est vraiment terrible

C'est pour un site que j'ai créer en marque blanche, il est en C#.

Dans le code behind de ma page aspx
CODE
   void Page_Load(object sender, EventArgs e)
   {
       Response.AddHeader("P3P", "policyref='http://lingeriesexy.marque-blanche.com/boutique/p3p.xml',CP='NON DSP COR CURa PSA PSD OUR BUS NAV STA'");
   }
genmin
Est ce que quelqu'un pourrai me dire si cette astuce marche uniquement pour les ifram ou aussi pour les des sites totalement différent et avec un domaine différent? merci m'sieur dame
echangiste
Dans mon cas, ce sont deux sites complétement différents (donc avec des noms de domaines différents)



Plus haut tu dis
CITATION
p3p.hml


As tu essayé p3p.xml et non .html
llopht
Il reste quand même un problème de taille.

Prenons l'exemple une un IFRAME dans la page :

1er Chargement de la page : j'obtiens l'ID de session 13546540
2nd Chargement de la page : j'obtiens l'ID de session 13546540

Tout fonctionne correctement !

Maintenant prenons un exemple avec 3 IFRAME dans la page :

1er Chargement de la page :
IFRAME1 : j'obtiends l'ID de session 13546541
IFRAME2 : j'obtiends l'ID de session 13546542
IFRAME3 : j'obtiends l'ID de session 13546543

2nd Chargement de la page :
IFRAME1 : j'obtiends l'ID de session 13546543
IFRAME2 : j'obtiends l'ID de session 13546543
IFRAME3 : j'obtiends l'ID de session 13546543

Au chargement de la second page les IFRAME obtienne l'ID de session du dernier IFRAME affiché sur la première page. L'IFRAME1 et l'IFRAME2 perdent les informations enregitré lors de la première page.... Le problème est identique sur IE sur Firefox. Quelqu'un à une explication, une solution ?????

Jérôme
Rapace15
Pour le problème de session PHP, le problème me semble "normal".

Lorsque tu lances la commande session_start();, le serveur web crée une nouvelle session à moins que tu ne lui indiques la session à utiliser.

Pour palier à ce problème, avant de lancer une session_start(); récupère ton identifiant de session puis dis lui d'utiliser cette session.

Dans l'exemple ci-après, l'identifiant de la session est passé dans l'URL :

CODE
<?php
$id =$_GET['PHPSESSID'];
session_id($id);
session_start();
....
?>


Ce qui veut dire pour ton problème, chaque fichier PHP contenu dans tes I-Frames doit reprendre les lignes ci-dessus (ou alors tu passes l'identifiant de session via un cookie)
sltcoach
Voila moi jai un gros soucis

J'ai besoin de faire une commande en ligne pour un site et cette commande est en plusieur étapes :

1: Page de log du client
2: Recap des infos du client
3: Création de la commande
4: recap de la commande
5: Validation de la commande

Je suis parti de ma page 1 qui envoie sur une page de verif et si le log et mdp est bon les enregistre dans $_session(nom de la variable)

Puis sur chacune des mes page suivantes, j ai un include(page de verif) qui verifie qu il y a bien un log dans la session et que celui est bien dans la BDD !

Mon souci est que sous Firefox tout marche niquel je recup mes variable quand je veux et je ne suis pas obligé de faire des Get sur tout les page mais j appelle juste ma session ! Mais Sous IE rien ne marche !!!!!

J explique : sur ma page 1 je rentre mon log et mdp
page de verif il ne me dis rien et sur ma 3e page de recap avec mon include il me renvoi sur ma page de log ! Si je lui dis de m'ecrire mes valeur de ma session il ne me dis rien...

Mais en bas de ma page j ai l'oeil rouge d'IE qui dit : RAPPORT DE CONFIDENTIALITES... Les cookies sont bloqués !

Je ne comprend pas car j envoie pas de cookie mais je fais des sessions (normalement du coté server) et je ne vois pas comment passé a travers ca meme avec ce que vous avez expliquer en XML...

Je patauge vraiment et ca me prend le choux depuis deja quelques jours alors si vous avez la solution détaillé pour m'enlever ce pieux du pied ... J'en serrai tres tres tres reconnaissant

Merci pour tout
Anonymus
Bonjour,

En fait, les identifiants de session sont envoyés de plusieurs manières différentes, et c'est le serveur qui choisit à défaut d'être orienté correctement.
Ainsi, si tu décides d'envoyer tes id par l'url, le problème est réglé. Sinon, ca se fait soit par l'entete (jettes un oeil à l'outil du Hub permettant de visualiser les entetes renvoyées par le serveur), soit donc par les cookies.
Si ton navigateur refuse les cookies, alors il n'est pas étonnant que tes sessions n'arrivent pas à suivre.

Pour éviter ce problème, 2 solutions. Soit tu réactives tes cookies, soit tu fais passer l'identifiant de session par l'url. Je pencherais plutot pour la seconde solution. Elle te garantie que ton site marchera avec les autres internautes.

Juste une précision :
CITATION
Je ne comprend pas car j envoie pas de cookie mais je fais des sessions (normalement du coté server)

L'identifiant de session est bien inscrite coté serveur, avec les données inhérentes. Mais il faut bien que le serveur sache, quand tu te connecte à une page, quel identifiant t'attribuer. C'est pour cela que l'id. te suit en plus d'être sur le serveur.

Anonymus.
lorik
Bonjour,

Je vais peut être dire une grosse c..., mais il me semble que ça dépend surtout du paramettrage de php pour les sessions :

Si php est paramettré en 'use only cookies', et si le navigateur n'accèpte pas les cookies, les sessions ne passent pas.

Mais ce n'est pas (je crois) le paramettrage par defaut de php : Normalement (si j'ai bien compris les réponses à mes propres posts smile.gif ), php tente par defaut de passer les sessions par cookies, et si ça ne passe pas, il les fait passer par l'url.

Ca vaut peut être le cout que tu regardes de près le parametrage de php chez ton hebergeur...
smn
Bonjour,

J'ai essayé tout ce qui a au dessus mais sans succès. je me permet donc de poster ma problèmatique.

Voila j’ai un système de tracking depuis un email.

Pour cela je dois insérer un code dans la page de mon site qui permet de rappeler et d’enregistrer le cookie issus de la lecture du mail. Le script qui permet cela est sur un domaineA tandis que le code se trouve sur le site à tracker sur le domaineB

Le code ressemble à cela :

<IFRAME width="1" height="1" frameborder="yes" scrolling="auto" name="iframe" SRC="http://nomdedomaineB/mail/l/get_cookie.php?web_track=1&perso=0"><ilayer SRC="http:// nomdedomaineB /mail/l/get_cookie.php?web_track=1&perso=0"></ilayer></IFRAME>

Ce code est inséré sur une page se trouvant sur un nomdedomaineA

Merci de votre aide

++
Stéphane
lorik
A ma connaissance, Un mail ne peut pas implanter de cookie, non ? ça expliquerait que tu ne puisse pas le récuperer...
trihanhcie
Bonjour,

Je n'y connais strictement rien à xml et je suis débutant en php... Si qq peut m'expliquer les quelques lignes de XML qui ont été écrites, ca m'arrangerait biggrin.gif
Le but :

J'ai un problème d'accès à un cookie à partir d'un autre domaine...

J'ai créé un cookie à partir de mon 1e site.com et j'aimerai accéder aux informations de mon 2e site2.fr. Ca fonctionne sour firefox mais sous IE6, sauf si je mets la sécurité la plus basse, je n'arrive pas à lire les informations...
Merci si votre solution peut m'aider wink.gif
lorik
Seul le domaine qui a implanté le cookie peut le lire. Donc si le domaine 1 implante, le domaine 2 ne peut pas lire.

Et si tu débutes en php, bon courage pour ce genre de problème ! wink.gif
trihanhcie
Merci Lorik biggrin.gif

C'est bien ce que j'ai cru comprendre sad.gif(. Tu connais une maniere de contourner ce problème?

Si tu me trouves une solution t'auras ma reconnaissance éternelle whistling.gif
lorik
C'est assez compliqué (pour moi), peux tu préciser exactement ce que tu cherche à faire, je verrai si je peux de dépanner.
trihanhcie
tu aurais un mail ? biggrin.gif c'est pour mon stage que je fais ca wink.gif

PS : je t'ai envoyé un mp
trihanhcie
Merci pour la réponse mais il y a une 2e partie à mon problème biggrin.gif J'espère que tu pourrais également m'aider wink.gif

PS : tjs en mp wink.gif
Arnaud_B
Salut,

J'ai le même souci avec des Cookies.

Je pose un cookie depuis un domaineA et j'aimerai le lire depuis une iframe (pointant vers le DomaineA) sur un domaineB.

Tout se passe bien pour le posé mais je n'arrive pas à le lire depuis l'iframe.

Quel est le problème ???? huh.gif

Arnaud.
fr3br0
Bonjour smile.gif ,

je viens de découvrir ce code qui semble très intéressant et surtout correspond à ce que je cherche

Dans un soucis de clarification de la chose, j'écris ci dessous les 2 codes principaux

Soit le fichier codeB.php appartenant au domaine siteB.com et appelé via une iframe contenu dans le fichier test.html appartenant au domaine siteA.com
Le fichier p3p.xml étant sur http://www.siteA.com

Le code de siteA.com/test.html :
CODE
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document sans nom</title>
</head>

<body>
<iframe src="http://www.siteB.com/codeB.php" frameborder="yes"  height="18px" width="400px" scrolling="no" hspace="0" marginheight="0" marginwidth="0"></iframe>
</body>
</html>


Le code de siteB.com/codeB.php :
CODE
<?php
header("P3P: policyref=\"http://www.siteA.com/p3p.xml\",CP=\"NON DSP COR CURa PSA PSD OUR BUS NAV STA\"");
$valeurducookie='valeurcookie';
$nb_heures=1;
setcookie("moncookie",$valeurducookie, time()+(3600*$nb_heures), "/", "siteA.com",0);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document sans nom</title>
</head>

<body>test
</body>
</html>



ce code correspond t-il à la philosophie de l'astuce proposée dans ce topic ?

merci d'avance
laurent
zaver
Bonjour,
J'aimerais avoir des retours d'expériences réussies de la mise en place d'un fichier p3p permettant d'ajouter des cookies depuis une iframe sous IE7.


Site A : page 1
Site B : page 2

Sur la page 1, j'appelle la page 2 par une iframe. La page 2 dépose un cookie pour le Site B, mais cet ajout de cookie est bloqué sous IE.


Merci
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.