web-dev-qa-db-fra.com

Les publicités peuvent-elles lire les cookies du site Web sur lequel il se trouve?

Je sais que de nombreuses annonces peuvent stocker des cookies tiers, mais qu'en est-il de la lecture des cookies? Si oui, qu'est-ce qui les empêche de lire l'ID de session pour effectuer un détournement de session?

40
user3500869

Tout script inclus dans une page peut lire tous les cookies pour lesquels l'attribut httpOnly n'est pas défini. Les restrictions d'accès aux scripts ne sont pas déterminées en fonction du domaine à partir duquel le script a été chargé, mais uniquement sur la page dans laquelle il est chargé. Cela signifie que tous les scripts chargés dans une page ont le même accès et le même contrôle sur cette page, quelle que soit l'origine du script. En ce qui concerne les cookies, cela signifie que vous devez protéger tous les cookies sensibles tels que les identifiants de session avec httpOnly si vous avez inclus des scripts tiers qui échappent à votre contrôle et faites confiance à votre page.

Mais inclure de tels scripts dans une page travaillant avec des données sensibles est de toute façon une mauvaise idée, car de tels scripts peuvent non seulement lire les cookies (sauf httpOnly) mais aussi extraire des informations à partir de formulaires (comme les informations de connexion) ou modifier la logique d'application côté client. Voir aussi Dois-je m'inquiéter du suivi des domaines sur un site Web bancaire? .

Notez que ces instructions s'appliquent uniquement au script tiers qui est directement inclus dans la page principale. Si le script est à la place uniquement à l'intérieur d'un iframe tiers à l'intérieur de la page principale, il ne peut ni lire les cookies sur la page principale ni accéder ou modifier le DOM sur celle-ci.

57
Steffen Ullrich

Chaque cookie appartient à un domaine (une origine). Chaque navigateur moderne implémente une politique de même origine qui empêche un script d'accéder aux cookies d'une origine différente de celle qui exécute le script (avec quelques solutions pour les sous-domaines).

Si oui, qu'est-ce qui les empêche de lire l'ID de session pour effectuer un détournement de session?

Si somesite.example implémente un script publicitaire de cette façon ...

<script src="https://rogueadvertisement.example/script.js"></script>

... rien n'empêche le script d'accéder et de modifier un cookie sur somesite.example, sauf si le cookie a le drapeau HttpOnly défini. (Cet indicateur refuse l'accès à un cookie pour tous les scripts clients et le rend uniquement disponible via l'en-tête de réponse HTTP.) En effet, un script intégré est exécuté sur le Origine du site d'intégration.

Si somesite.example intègre une publicité tierce dans un cadre ...

<iframe src="https://rogueadvertisement.example/ad.html"></iframe>

... le document incorporé a sa propre origine et les scripts s'exécutant à l'intérieur du cadre ne peuvent pas accéder aux cookies appartenant au domaine du document parent.

En outre, il existe des boutons pour rendre l'incorporation de sources potentiellement non fiables encore plus sûre, comme HTML5 attribut sandbox . L'utiliser comme attribut vide ...

<iframe sandbox src="https://rogueadvertisement.example/ad.html"></iframe>

... applique diverses restrictions supplémentaires telles que le refus de scripts en cours d'exécution à l'intérieur du cadre.

20
Arminius