it-swarm.com.de

Können Anzeigen Cookies der Website lesen, auf der sie sich befinden?

Ich weiß, dass viele Anzeigen Cookies von Drittanbietern speichern können, aber was ist mit dem Lesen von Cookies? Wenn ja, was hindert sie daran, die Sitzungs-ID zu lesen, um eine Sitzungsentführung durchzuführen?

40
user3500869

Jedes auf einer Seite enthaltene Skript kann alle Cookies lesen, für die das httpOnly-Attribut nicht festgelegt ist. Zugriffsbeschränkungen für Skripte werden nicht basierend auf der Domäne festgelegt, aus der das Skript geladen wurde, sondern nur auf der Seite, in die es geladen wird. Dies bedeutet, dass alle auf eine Seite geladenen Skripte denselben Zugriff und dieselbe Kontrolle über diese Seite haben, unabhängig von der Herkunft des Skripts. In Bezug auf Cookies bedeutet dies, dass Sie vertrauliche Cookies wie Sitzungs-IDs mit httpOnly schützen müssen, wenn Sie Skripte von Drittanbietern, die außerhalb Ihrer Kontrolle liegen und Ihrer Seite vertrauen, in Ihre Seite aufgenommen haben.

Das Einfügen solcher Skripte in eine Seite, die mit vertraulichen Daten arbeitet, ist ohnehin eine schlechte Idee, da solche Skripte nicht nur Cookies lesen können (außer httpOnly), sondern auch Informationen aus Formularen (wie Anmeldeinformationen) extrahieren oder die clientseitige Anwendungslogik ändern können. Siehe auch Sollte ich mir Sorgen machen, Domains auf einer Bank-Website zu verfolgen? .

Beachten Sie, dass diese Anweisungen nur für Skripte von Drittanbietern gelten, die direkt auf der Hauptseite enthalten sind. Befindet sich das Skript stattdessen nur in einem Iframe eines Drittanbieters auf der Hauptseite, kann es weder Cookies auf der Hauptseite lesen noch auf das DOM darauf zugreifen oder es ändern.

57
Steffen Ullrich

Jedes Cookie gehört zu einer Domain (einem Origin). Jeder moderne Browser implementiert eine Richtlinie mit demselben Ursprung, die verhindert, dass ein Skript auf Cookies eines Ursprungs zugreift, der sich von dem unterscheidet, auf dem das Skript ausgeführt wird (mit einigen Problemumgehungen für Subdomänen).

Wenn ja, was hindert sie daran, die Sitzungs-ID zu lesen, um eine Sitzungsentführung durchzuführen?

Wenn somesite.example Auf diese Weise ein Werbeskript implementiert ...

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

... nichts hindert das Skript daran, auf ein Cookie unter somesite.example zuzugreifen und es zu ändern, es sei denn, für das Cookie ist das Flag HttpOnly gesetzt. (Dieses Flag verweigert den Zugriff auf ein Cookie für alle Client-Skripte und stellt es nur über den HTTP-Antwortheader zur Verfügung.) Dies liegt daran, dass ein eingebettetes Skript auf dem ausgeführt wird Ursprung der Einbettungsstelle.

Wenn somesite.example Eine Werbung eines Drittanbieters in einen Frame einbettet ...

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

... das eingebettete Dokument hat seinen eigenen Ursprung und Skripte, die im Frame ausgeführt werden, können nicht auf Cookies zugreifen, die zur Domäne des übergeordneten Dokuments gehören.

Es gibt auch einige Knöpfe, die das Einbetten potenziell nicht vertrauenswürdiger Quellen noch sicherer machen, wie z. B. das HTML5 Sandbox-Attribut . Verwenden Sie es als leeres Attribut ...

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

... erzwingt verschiedene zusätzliche Einschränkungen, z. B. das Verweigern von Skripten, die im Frame ausgeführt werden.

20
Arminius