Ich habe eine Frage bezüglich eines möglichen Sicherheitsproblems/einer Einschränkung bezüglich JavaScript gehostet auf einer Domäne (ex: Domäne eines CDN, sagen example.com), aber geladen von einer Website unter einer anderen Domäne (zB example.net).Kann ein auf einer anderen Domain gehostetes JavaScript das DOM einer anderen Domain lesen/ändern?
Nun stellen Sie sich vor, dass das geladene JavaScript nur Text in einer div
mit einer bestimmten ID lesen/ändern wird, also nichts "kompliziert". Ein Beispiel: Ich habe das Skript von http://example.com/myscript.js geladen und ausgeführt auf http://example.net/index.html: [beachten Sie die verschiedenen TLD!]
<!-- Page example.net/index.html -->
<script src="http://example.com/myscript.js"></script>
Ich weiß, dass ich nicht Plätzchen unter mysite.com vom JavaScript zugreifen kann, aber ich kann auf das gesamte DOM auf der Seite zugreifen und es im Fall ändern. Ist das nicht ein mögliches Sicherheitsproblem? Sollte dies nicht den gleichen Ursprungspolicy-Schutz auslösen?
Gibt es Benutzeragenten, die verhindern, dass ein in einer anderen Domäne gehosteter JavaScript auf Elemente auf der Seite zugreift, auf der das Skript ausgeführt wird?
Und wird das obige Beispiel auch auf HTTPS-Seiten funktionieren? (Ex: https://example.net/index.html lädt das Skript von https://example.com/myscript.js)
Ja, und genau deshalb werden CDNs verwendet, um js-Dateien zu laden. –
Vielen Dank für die ausführliche Antwort. In Bezug auf Cookies, wenn ich ein "globales" Cookie von example.com setzen möchte (Cookie gesendet über den Set-Cookie-Header als Antwort, der das JS-Skript enthält), kann das von allen Seiten gelesen werden, die das Skript von example.com laden (die CDN), sollte ich davon ausgehen, dass dies unmöglich ist, oder? –
Korrekt. Beachten Sie den Hinweis in der Antwort zur Verwendung von serverseitigem Code. – Quentin