Philipp Hasenfratz: Same Domain Policy bei Cookies verletzt?

Beitrag lesen

Halihallo Forumer

Javascripts Same-Domain-Policy besagt, dass jedwelche Interaktion von Javascript mit
Daten auf dieselbe Domain beschränkt ist, sodass ein Missbrauch und Zugriff auf andere
Domains ausgeschlossen ist. Als ich mich mit der client- und serverseitigen Behandlung
von Cookies auseinandergesetzt habe, ist mir jedoch etwas aufgefallen:

Nehmen wir an, wir laden ein externes Javascript von dem Host remot-host.com in unsere
HTML-Datei auf Host origin-host.com ein und lassen es einen neuen Cookie über
document.cookie erstellen. Lesen wir den Cookie dann über das selbe externe Javascript
ein, erhalten wir nicht nur diesen Cookie, sondern auch diejenigen des Hosts
origin-host.com, obwohl das Javascript nicht diesem Host angehört.

Anders formuliert:
Wann immer ein Cookie über Javascript gesetzt wird, ist die Domain automatisch auf die
der HTML-Datei gesetzt. Normalerweise ist das völlig richtig, nur halte ich es für eine
Verletzung der Same-Domain-Policy, wenn auch Cookies einer externen, hostfremden
Javascript-Datei als Cookie des Hosts der HTML-Datei gesetzt werden.

Szenario:
Es kann vorkommen, dass z.B. ein Counter-Service über Javascript in die eigene Page ein-
gebunden ist (normalerweise geschieht dies über ein image, aber oftmals wird auch Java-
Script eingesetzt, um dynamisch eine Zufallszahl anzuhängen, um das Caching zu
verhindern). Dieser Counter-Service könnte a) alle Cookies "meiner Page" auslesen und
so ggf. an Daten meiner Services rankommen; b) meine Cookies überschreiben und so meinen
Services schaden. Ich würde dieses Verhalten, was ich bisher mit IE6,NS4,NS7,NS6,Opera
reproduzieren konnte, doch als kleines Sicherheitsrisiko und Bug bezeichnen. Genauso
kann man es aber als Feature bezeichnen, denn man hat es leichter Domainübergreifende
Javascript-Services aufzubauen...

Zum selber testen:
html-Datei auf origin-host:
<code>
  <script type="text/javascript">
    document.cookie = 'origin-domain=test1';
  </script>
  <script type="text/javascript" src="http://127.0.0.1/co.js"></script>
  <script type="text/javascript">
    alert( 'Cookies of origin-domain: ' + document.cookie );
  </script>
</code>

javascript-Datei auf remote-host:
<code>
   document.cookie='remote-host=test';
   alert( 'Cookies on Remote-Host ' + document.cookie );
</code>

Beim Laden erhalten wir eine Meldung der Cookies auf dem remote-host (der origin-domain
Cookie ist eben auch sichtbar), und die Meldung der Cookies auf dem origin-host, welcher
jetzt u.a. eben auch einen Cookie der fremden Domain hat.

Bei dem serverseitigen setzen des Cookies wird die Domain richtig gesetzt.

Meine Frage: Was haltet Ihr davon?

Viele Grüsse

Philipp

--
RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.