web-dev-qa-db-fra.com

Une page Web peut-elle lire les cookies d'une autre page?

J'écoutais Pandora en me connectant ici, et la prochaine publicité concernait InfoSec. Cela m'a amené à me demander si c'était une coïncidence (probablement) ou s'ils savaient d'une manière ou d'une autre. Pour faire court, je me demandais si une page Web pouvait accéder aux cookies qu'elle n'y avait pas (obtenant ainsi un historique de navigation assez précis ainsi que des informations sur l'utilisateur). Il me semble que cela devrait être (et est probablement) défendu, mais si c'est le cas, comment? Je peux lire les cookies sur mon ordinateur et voir au moins d'où ils viennent, donc il ne semble pas qu'ils soient cryptés ...

32
KnightOfNi

Oui, cela est défendu contre l'utilisation de la même politique d'origine , ce qui empêche généralement un site de lire un autre cookie.

Lorsque vous voyez un comportement où les publicités semblent savoir où vous avez été, cela est probablement dû aux cookies de suivi des publicités tiers.

Donc, à titre d'exemple simplifié, si vous allez sur le site A qui utilise un réseau publicitaire, ce réseau publicitaire peut enregistrer que vous étiez sur ce site en plaçant un cookie de suivi sur votre PC.

Ensuite, lorsque vous accédez au site B qui utilise le même réseau publicitaire, le réseau publicitaire lit le cookie qui a été défini lorsque vous étiez sur le site A (ce qu'il peut faire, car il charge le contenu de ses domaines dans les deux cas, donc il ne le fait pas). même origine) et peut ensuite vous proposer des publicités en fonction de vos habitudes de navigation.

41
Rory McCune

Un navigateur correctement conçu ne permettra pas à un site Web d'accéder aux cookies d'un autre site Web, car cela violerait la politique interdomaines et constituerait un problème de sécurité majeur.

Les sites Web non liés peuvent implémenter des scripts qui envoient des informations à un seul réseau de suivi des annonces, qui peut ensuite diffuser des publicités personnalisées sur ces sites Web participants en fonction de votre activité signalée.

L'activation des options "Ne pas suivre" n'est pas fiable à 100%, car "Ne pas suivre" ne peut fonctionner que si le site Web qui reçoit la demande "Ne pas suivre" accepte activement la demande. Les cookies peuvent être désactivés ou bloqués, mais il existe encore d'autres moyens simples pour que les réseaux publicitaires puissent suivre votre activité:

  • Les pages sur des sites non liés peuvent afficher un fichier image qui réside sur le serveur de réseau publicitaire. Lorsque votre navigateur demande le fichier image, il envoie votre adresse IP et l'URL de référence (la page sur laquelle l'image est affichée) au serveur de réseau publicitaire. L'URL de l'image pourrait être améliorée avec des paramètres d'information (générés par le serveur de pages). Heureusement, un bloqueur de publicités pourrait bloquer une telle image.
  • Lorsque votre navigateur demande une page Web, le serveur de pages peut communiquer directement avec la régie publicitaire et partager des informations telles que votre adresse IP et le contenu que vous avez demandé. Vous ne pouvez pas bloquer cette forme de suivi, mais elle peut être potentiellement atténuée via l'utilisation d'un VPN.
3

Il pourrait y avoir un canal latéral de synchronisation ici. Supposé que si un utilisateur est connecté, il obtient une énorme quantité d'informations, mais s'il se déconnecte, il obtient un petit formulaire de connexion. Le débit du canal Internet est limité, de sorte que le temps que l'utilisateur télécharge la même page peut être différent selon le contenu. JS permet de mesurer le temps nécessaire au chargement des éléments pour qu'il soit possible de déterminer si un utilisateur est connecté sur un site Web étranger non coopératif. Je n'ai pas testé cette idée et je n'ai même pas googlé, mais je sais que l'attaque contre les hsts racontée l'année dernière lors de certaines conférences utilise le timing side-channel.

1
KOLANICH

Tu as écrit:

Je me demandais si une page Web pouvait accéder à des cookies qu'elle n'y mettait pas (obtenant ainsi un historique de navigation assez précis ainsi que des informations sur l'utilisateur). Il me semble que cela devrait être (et est probablement) défendu, mais si c'est le cas, comment? Je peux lire les cookies sur mon ordinateur et voir au moins d'où ils viennent, donc il ne semble pas qu'ils soient cryptés ...

Vous avez raison, oui, vous pouvez lire le contenu des cookies, car c'est votre ordinateur. Mais cela ne signifie pas que le navigateur permettra à n'importe quel site Web de les lire. Donc, ce sont deux choses différentes. Vous pouvez également avoir des fichiers personnels sur votre ordinateur que VOUS pouvez lire, mais pas un site Web.

Vous avez une question intéressante. Jusqu'à présent, je supposais que chaque page Web avait ses propres cookies. Mais cela s'avère faux. La vérité est que chaque domaine a ses propres cookies. C'est du moins ainsi que Firefox semble fonctionner. Donc, si vous avez trois pages sur votre site Web, ils peuvent accéder aux cookies les uns des autres.

Vous ne pouvez pas voir avec précision l'historique de navigation d'une personne à partir des cookies. Les cookies stockent généralement le domaine, la date d'expiration, les paramètres, les compteurs et tout ce que l'utilisateur peut avoir entré dans un formulaire. Voilà donc ce que vous pouvez découvrir à partir d'un cookie. Le pire des cas serait de dire que vous entrez votre numéro de carte de crédit sur une seule page. Le JavaScript enregistre le numéro dans un cookie (CARDNO = 1234567890123456) et vous transfère vers une autre page du même domaine. Ensuite, cette page lit le numéro et le vérifie et vous envoie à la troisième page, qui soumet ensuite les données au serveur. Cela semble fou, mais c'est POSSIBLE. En regardant les cookies, vous ne saurez pas que l'utilisateur a visité les trois pages. Tout ce que vous savez, c'est ce qui est enregistré dans le cookie, la date d'expiration et l'origine. Dans ce cas, si le numéro de carte de crédit est enregistré dans un cookie, c'est ce qu'il y a dans le cookie. Il peut être chiffré ou non, oui. Les pages Web d'autres domaines ne devraient pas pouvoir lire les cookies, car comme vous pouvez le voir, ce serait un énorme problème. Maintenant, puisque vous êtes le propriétaire de votre ordinateur, vous pouvez accéder à tout sur votre ordinateur, donc vous pouvez voir TOUS les cookies enregistrés sur votre ordinateur si vous le souhaitez. Et ce n'est pas un problème de sécurité tant que vous êtes la seule personne à utiliser votre ordinateur. Si votre ordinateur est volé ou si vous partagez un ordinateur avec quelqu'un, vous pouvez toujours lire les documents et cookies d'une autre personne et d'autres choses si vous avez un compte administrateur.

Les cookies fournissent environ 5 Ko d'espace pour chaque domaine pour enregistrer les données. Cela peut être un peu plus ou moins. Si un site Web doit enregistrer beaucoup plus de données, il existe une nouvelle chose appelée localStorage. Il fonctionne de la même manière que les cookies, mais il permet à un site Web d'économiser des mégaoctets de données au lieu de quelques kilo-octets. Encore une fois, comme pour les cookies, les valeurs de localStorage sont partagées entre les pages Web du même domaine. Ainsi, si une page définit une valeur, une autre page peut lire cette valeur dans le même domaine.

Voir aussi: https://html.spec.whatwg.org/multipage/webstorage.html#dom-localstorage

0
Zsolt