- Same-Origin-Policy
-
Die Same-Origin-Policy (SOP) ist ein Sicherheitskonzept, das es JavaScript und ActionScript nur dann erlaubt, auf Objekte einer anderen Webseite zuzugreifen, wenn sie aus derselben Quelle (Origin) stammen. Sie stellt ein wesentliches Sicherheitselement in allen modernen Browsern und Webanwendungen zum Schutz vor Angriffen dar.
Inhaltsverzeichnis
Geschichte
Die Same-Origin-Policy wurde 1996 von Netscape mit JavaScript in Netscape Navigator 2.0 eingeführt.[1] Sie wurde von anderen Herstellern in deren JavaScript-Implementierungen bzw. proprietären Skriptsprachen (zum Beispiel JScript oder ActionScript) übernommen.
Hintergrund
Den Hintergrund für die große Bedeutung der SOP bildet im Wesentlichen die Kombination aus zwei Tatsachen:
- Skriptsprachen im Browser haben über das Document Object Model (DOM) direkten Zugriff auf die gesamte Kommunikation zwischen Browser und Web-Server. Dies beinhaltet sowohl das Auslesen als auch die Manipulation von Daten und betrifft neben dem Empfangen auch das Senden von Daten.
- Das Vertrauensverhältnis zwischen Browser (bzw. Anwender) und verschiedenen Webseiten kann extrem unterschiedlich sein.
Daraus ergibt sich die Anforderung, dass keine Informationen aus einem Kontext (zum Beispiel der Verbindung des Browsers zu der Seite einer Bank) von einem Skript aus einem anderen Kontext zugreifbar oder manipulierbar sein darf. Um dies zu erreichen, wird beim Zugriff eines Skriptes auf ein Objekt einer Webseite die Herkunft (origin) von beiden verglichen.
Vergleich der Herkunft (origin)
Als Herkunft wird dabei die Kombination aus Protokoll (zum Beispiel http oder https), Domain und Port in der URL definiert. Nur wenn alle drei gleich sind, gilt die SOP als erfüllt und der Skript-Zugriff ist möglich.
Beispiele
Ein in der Datei http://example.com/dir/page.html eingebettetes Skript versucht, auf ein Element in den folgenden Seiten zuzugreifen:
- http://example.com/dir2/another.html
- http://example.com/dir/inner/another.html
- die SOP ist erfüllt
- http://www.example.com/dir/another.html
- die SOP ist nicht erfüllt, andere Domain
- http://example.com:89/dir/another.html
- die SOP ist nicht erfüllt, anderer Port
- https://example.com/dir/another.html
- die SOP ist nicht erfüllt, andereres Protokoll
Eine Ausnahme bilden Subdomains: Über eine spezielle DOM-Eigenschaft kann zum Beispiel ein Skript aus der Domain www.example.com den Kontext auf eine übergeordnete Domain wie zum Beispiel example.com setzen und damit auf Objekte dieser Domain zugreifen.[2]
Grenzen und Probleme
Die Grenzen der Same-Origin-Policy sind in zweierlei Hinsicht von Bedeutung:
- Die SOP ist als Sicherheitsmechanismus nicht ausreichend wirksam. Viele aktuelle Angriffsmethoden wie DNS Rebinding und Cross-Site Request Forgery zielen erfolgreich darauf ab, die SOP zu umgehen.
- Andererseits sind die von der SOP gezogenen Grenzen in vielen Fällen unerwünscht. Insbesondere mit dem Aufkommen von Ajax-basierenden Anwendungen und Mashups gibt es legitimerweise den Wunsch, die Grenzen der SOP zu überschreiten.
Einzelnachweise
- ↑ Netscape Browser Archive. Abgerufen am 12. Oktober 2008.
- ↑ Mozilla: Same origin policy for JavaScript. Abgerufen am 12. Oktober 2008.
Quellen
- Justin Schuh: Same-Origin Policy Part 1: Why we’re stuck with things like XSS and XSRF/CSRF (englisch)
- Daniel Bachfeld: Dunkle Flecken, Neuartige Angriffe überrumpeln Webanwender. Heise Security.
Wikimedia Foundation.