Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/01/2011, 20h27   #1
Membre à l'essai
 
Inscription : novembre 2006
Messages : 121
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 121
Points : 22
Points : 22
Par défaut Définir cookie tiers (sur un autre domaine)

Bonjour,

Je cherche comment définir un cookie sur un autre domaine.

Par exemple, je suis en local, et j'ai écris un petit script PHP :

Code :
1
2
3
<?php
setcookie('aa_salut', 'salut, je suis un cookie défini par un autre site', time()+(3600*24), '/', 'www.google.fr');
?>
Ce script est appelé depuis l'URL http://localhost/monscript.php.

En allant voir dans les cookies de mon navigateur, je devrais donc avoir un cookie nommé aa_salut pour le domaine www.google.fr.

Or ça ne fonctionne pas, je ne vois pas le cookie que je viens de créer (j'ai testé avec Firefox 3 et Chrome, tous les 2 configurés pour accepter les cookies tiers).

Voici l'entête HTTP renvoyée par mon script :

Citation:
HTTP/1.1 200 OK
Date: Sat, 22 Jan 2011 19:17:03 GMT
Server: Apache/2.2.13 (Win32) mod_ssl/2.2.13 OpenSSL/0.9.8k PHP/5.2.10
X-Powered-By: PHP/5.2.10
Set-Cookie: aa_salut=salut%2C+je+suis+un+cookie+d%E9fini+par+un+autre+site; expires=Sun, 23-Jan-2011 19:17:03 GMT; path=/; domain=www.google.fr
Content-Length: 131
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Type: text/html
Y'a pourtant aucun problème, le cookie est bien envoyé dans l'entête...

Donc je vois pas pourquoi ça marche pas, quelqu'un sait ?

Merci
Galdon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2011, 21h59   #2
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Tout simplement parce que http://localhost/ n'est pas... www.google.fr.

L'agent utilisateur (le navigateur) le sait et, par mesure de sécurité ignore la requête.
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 00h33   #3
Membre à l'essai
 
Inscription : novembre 2006
Messages : 121
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 121
Points : 22
Points : 22
Mais dans ce cas ça veut dire que c'est impossible de définir des cookie tiers, puisqu'on ne pourrait définir un cookie que sur le domaine courant.

J'ai essayé de définir le cookie sur un sous domaine de localhost : forum.localhost, ben ça marche pas non plus.

Tu es sûr de ton explication, je comprends pas trop ?
Galdon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 02h12   #4
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Citation:
c'est impossible de définir des cookie tiers
Tu ne peux ni créer ni lire des cookies tiers car ils sont externes à ton domaine.

Citation:
J'ai essayé de définir le cookie sur un sous domaine de localhost : forum.localhost
Essaie en utilisant ".localhost comme paramètre domain de la fonction setcookie().

Citation:
Pour rendre le cookie disponible sur tous les sous-domaines de example.com, vous devez mettre la valeur '.example.com'.
Le point (.) n'est pas requis mais est nécessaire pour la compatibilité avec encore plus de navigateurs.
Positionnez le à www.example.com et le cookie sera disponible uniquement sur le sous-domaine www.
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 19h49   #5
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 706
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 706
Points : 3 274
Points : 3 274
Salut

Citation:
Mais dans ce cas ça veut dire que c'est impossible de définir des cookie tiers, puisqu'on ne pourrait définir un cookie que sur le domaine courant.

Tu es sûr de ton explication, je comprends pas trop ?
Les explications sont bonnes.

Fort heureusement qu'il ne soit pas possible de créer des cookies autres que son domaine, car si tel était le cas, ça serait non seulement un énorme manque de sécurité, mais aussi l'anarchie total.

Imagine que tu crée un cookie "google.com", il fait comment Google si l'utilisateur (le navigateur en faite) navigue/surf en même temps sur Google justement (autre onglet ou fenêtre) ?
Il ne peut pas avoir 2 cookies du même domaine, on est d'accord ?
Alors qui prendrait "le pas" dans ce cas là alors ? Google ou le tient ?

Bref, ce n'est pas pensable, il n'y pas à vouloir créer un cookie autre que son domaine.


Puis le principe de base des cookies, c'est que le navigateur n'accepte non seulement que les cookie du même domaine que celui qu'il vient d'interroger, car à l'origine, une requête HTTP a été envoyé à un domaine bien déterminé, mais aussi, le navigateur ne renverra un cookie que si le domaine est le même que celle de la requête HTTP qui est envoyée.

Donc en admettant même qu'on venait à créer un cookie d'un autre domaine que le sien (on peu le faire sur sa propre machine, suffit de connaitre SQLite, car FF l'utilise pour les cookies), le navigateur ne le renverrait jamais, donc le serveur ne le recevra jamais, autant dire que c'est l'impasse.

En somme, il faut qu'à chaque fois les 2 domaines concordent : le serveur/domaine qui est interrogé, et le serveur/domaine qui envoie la réponse.

Citation:
J'ai essayé de définir le cookie sur un sous domaine de localhost : forum.localhost, ben ça marche pas non plus.
Il est possible de créer des sous-domaine du domaine localhost, mais il faut un peu modifier Apache, le httpd.conf entre autre pour créer les virtualhost.
Il faut (normalement) indiquer aussi à la machine ces différents sous domaines, sur Win XP par exemple c'est dans :
C:\WINDOWS\system32\drivers\etc -> le fichier hosts

M'enfin, on s'éloigne un peu du sujet.


Quelle est le but recherché en voulant comme ça créer un cookie autre que ton domaine ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h43.


 
 
 
 
Partenaires

Hébergement Web