Gleichorientierte Politik

Im Computer, das gleichorientierte Politik (manchmal abgekürzt wie SOP) ist ein wichtiges Konzept in der Webanwendung Sicherheitsmodell. Unter der Police, a Webbrowser Ermöglicht Skripte, die in einer ersten Webseite enthalten sind Ursprung. Ein Ursprung ist definiert als eine Kombination von URI -Schema, Hostname, und Port-Nummer. Diese Richtlinie verhindert, dass ein böswilliges Skript auf einer Seite auf einer anderen Webseite Zugriff auf sensible Daten auf einer anderen Webseite erhalten hat Dokumentobjektmodell.

Dieser Mechanismus hat eine besondere Bedeutung für moderne Webanwendungen HTTP -Kekse[1] Um authentifizierte Benutzersitzungen aufrechtzuerhalten, handeln Server, die auf den HTTP-Cookie-Informationen basieren, um vertrauliche Informationen zu enthüllen oder staatlich ändernde Maßnahmen zu ergreifen. Eine strikte Trennung zwischen Inhalten, die durch nicht verwandte Websites bereitgestellt werden, muss auf der kundenseitigen Seite aufrechterhalten werden, um den Verlust der Vertraulichkeit oder Integrität der Daten zu verhindern.

Es ist sehr wichtig, sich daran zu erinnern, dass die gleichorientierte Richtlinie nur für Skripte gilt. Dies bedeutet, dass Ressourcen wie Bilder, CSS und dynamisch beladene Skripte über die entsprechenden HTML-Tags über Ursprünge hinweg zugegriffen werden können[2] (Schriftarten sind eine bemerkenswerte Ausnahme[3]). Angriffe nutzen die Tatsache, dass dieselbe Ursprungsrichtlinie nicht für HTML -Tags gilt.

Geschichte

Das Konzept der gleichorientierten Politik wurde von eingeführt von Netscape Navigator 2.02 im Jahr 1995,[4] kurz nach der Einführung von JavaScript in Netscape 2.0.[5][6] JavaScript aktiviert Scripting auf Webseiten und insbesondere programmatischer Zugriff auf das DOMR -Objektmodell (DOM).

Die Richtlinie wurde ursprünglich zum Schutz des Zugangs zum DOM entwickelt, wurde jedoch seitdem ausgebaut, um empfindliche Teile des globalen JavaScript -Objekts zu schützen.

Implementierung

Alle modernen Browser implementieren irgendeine Form der gleichorientierten Richtlinie, da dies ein wichtiger Sicherheitskorder ist.[7] Die Richtlinien sind nicht erforderlich, um eine genaue Spezifikation zu entsprechen[8] werden jedoch oft erweitert, um grob kompatible Sicherheitsgrenzen für andere Web -Technologien zu definieren, wie z. Microsoft Silverlight, Adobe Flash, oder Adobe Acrobat, oder für andere Mechanismen als direkte DOM -Manipulation, wie z. Xmlhttprequest.

Ursprungsbestimmungsregeln

Der Algorithmus zur Berechnung des "Ursprungs" eines URI ist in RFC 6454, Abschnitt 4 angegeben. Für absolute URIs ist der Ursprung das Triple {Schema, Host, Port}. Wenn der URI kein hierarchisches Element als Namensbehörde verwendet (siehe RFC 3986, Abschnitt 3.2) oder wenn der URI kein absoluter URI ist, wird eine global eindeutige Kennung verwendet. Zwei Ressourcen gelten als nur dann, wenn alle diese Werte genau gleich sind.

Zur Veranschaulichung gibt die folgende Tabelle einen Überblick über typische Ergebnisse für Schecks gegen die URL "http://www.example.com/dir/page.html".

Verglichen URL Ergebnis Grund
http://www.example.com/dir/page2.html Erfolg Gleiches Schema, Host und Port
http://www.example.com/dir2/other.html Erfolg Gleiches Schema, Host und Port
http: //Benutzername Passwort@www.example.com/dir2/other.html Erfolg Gleiches Schema, Host und Port
http://www.example.com:81/dir/other.html Versagen Gleiches Schema und Host -Host, aber ein anderer Port
https: //www.example.com/dir/other.html Versagen Unterschiedliches Schema
http: //en.example.com/dir/other.html Versagen Anderer Gastgeber
http: //Beispiel.com/dir/other.html Versagen Unterschiedlicher Host (genaue Übereinstimmung erforderlich)
http: //v2.www.example.com/dir/other.html Versagen Unterschiedlicher Host (genaue Übereinstimmung erforderlich)
http://www.example.com:80/dir/other.html Beruht Port explizit. Hängt von der Implementierung im Browser ab.

Im Gegensatz zu anderen Browsern enthält Internet Explorer den Port nicht in die Berechnung des Ursprungs, wobei die Sicherheitszone an seiner Stelle verwendet wird.[9]

Lesezugriff auf sensible Cross-Origin-Antworten durch wiederverwendbare Authentifizierung

Die gleichorientierte Politik schützt vor der Wiederverwendung authentifizierter Sitzungen über die Herkunft hinweg. Das folgende Beispiel zeigt ein potenzielles Sicherheitsrisiko, das ohne die gleichorientierte Richtlinie auftreten könnte. Angenommen, ein Benutzer besucht eine Bankwebsite und meldet sich nicht ab. Anschließend geht der Benutzer zu einer anderen Website, die einen böswilligen JavaScript -Code enthält, der Daten von der Banking -Site anfordert. Da der Benutzer weiterhin auf der Bankwebsite angemeldet ist, könnte der böswillige Code alles tun, was der Benutzer auf der Bankwebsite tun kann. Zum Beispiel könnte eine Liste der letzten Transaktionen des Benutzers, eine neue Transaktion usw. erstellen usw. Dies liegt daran Ebene Arten des Autorisierungsantrags -Headers an der Bankenstelle basierend auf der Domäne der Bankenstelle.

Die Eigentümer der Bank-Site würden erwarten, dass regelmäßige Browser von Benutzern, die die böswillige Website besuchen, den Code, der vom böswilligen Standort auf die Autorisierung auf der Bankensitzung oder auf die Autorisierung auf Plattformebene geladen wurde, nicht zulassen. Während JavaScript keinen direkten Zugriff auf das Bankensitzungs -Cookie hat, kann es immer noch Anfragen an die Banking -Site mit dem Sitzungs -Cookie der Bankwebsite senden und empfangen. Die gleiche Ursprungsrichtlinie wurde als Voraussetzung für sicherheitsrelevante Browser eingeführt, um den Lesezugriff auf Antworten aus allen Ursprüngen zu verweigern, mit der Annahme, dass die Mehrheit der Benutzer sich für konforme Browser entscheidet. Die Richtlinie leugnet keine Schreibvorgänge. Der Bekämpfung des Missbrauchs der Schreibberechtigung erfordert zusätzliche CSRF Schutz durch die Zielstellen.

Entspannen der gleichorientierten Politik

Unter bestimmten Umständen ist die gleichorientierte Richtlinie zu restriktiv und stellt Probleme für große Websites auf, die mehrere verwenden Subdomänen. Zunächst eine Reihe von Problemumgehungen wie die Verwendung der Verwendung Fragment -Kennung oder der Fenster.name Die Eigenschaft wurde verwendet, um Daten zwischen Dokumenten in verschiedenen Domänen zu übergeben. Moderne Browser unterstützen mehrere Techniken, um die gleichorientierte Richtlinie kontrolliert zu entspannen:

Datenverkleinerung

Netscape Navigator kurz enthielt a Makelprüfung Besonderheit. Das Merkmal wurde 1997 als Teil von Netscape 3 experimentell eingeführt.[10] Die Funktion wurde standardmäßig deaktiviert, aber wenn sie von einem Benutzer aktiviert sind, können Websites versuchen, JavaScript -Eigenschaften von Windows und zu lesen Rahmen Zugehörigkeit zu einer anderen Domäne. Der Browser würde dann dem Benutzer fragen, ob er den betreffenden Zugang zulassen möchte.[11][12]

Dokument.Domain -Eigentum

Wenn zwei Fenster (oder Frames) Skripte enthalten, die die Domäne auf denselben Wert festlegen, wird die gleichorientierte Richtlinie für diese beiden Fenster entspannt, und jedes Fenster kann mit dem anderen interagieren. Beispielsweise können die Kooperation von Skripten in Dokumenten, die von orders.example.com und catalog.example.com geladen wurden, ihre festlegen document.domain Eigenschaften zu "example.com", wodurch die Dokumente den gleichen Ursprung zu haben und jedes Dokument zu ermöglichen, Eigenschaften des anderen zu lesen. Das Festlegen dieser Eigenschaft setzt den Port implizit auf NULL, was die meisten Browser unterschiedlich als Port 80 oder sogar einen nicht spezifizierten Port interpretieren. Um sicherzustellen, dass der Zugriff vom Browser zulässig ist, setzen Sie das Dokument. Domain -Eigenschaft beider Seiten.[13]

Das document.domain Das Konzept wurde als Teil des Netscape Navigator 3 eingeführt,[14] veröffentlicht 1996.[10]

Cross-Origin-Ressourcenfreigabe

Die andere Technik zur Entspannung der gleichorientierten Richtlinie ist unter dem Namen standardisiert Cross-Origin-Ressourcenfreigabe (CORS). Dieser Standard erweitert HTTP mit einem neuen Header für die Ursprungsanforderung und einem neuen Reaktionsübergang der Zugriffskontrolle.[15] Server können einen Header verwenden, um Herkunft explizit aufzulisten, die eine Datei anfordern oder eine Platzhalter verwenden und eine Datei von einer beliebigen Website angefordert werden können. Browser wie Firefox 3.5, Safari 4 und Internet Explorer 10 verwenden diesen Header, um die Cross-Origin-HTTP-Anforderungen mit XMLHTTPrequest zu ermöglichen, die sonst von der gleichorientierten Richtlinie verboten worden wären.

Cross-Dokument-Nachrichten

Eine andere Technik, Cross-Dokument-Nachrichten Ermöglicht ein Skript von einer Seite, Textnachrichten an ein Skript auf einer anderen Seite weiterzugeben, unabhängig vom Skript -Ursprung. Das Aufrufen der postMessage () -Methode auf einem Fensterobjekt asynchron feuert in diesem Fenster ein "OnMessage" -Ereignis und löst alle benutzerdefinierten Ereignishandler aus. Ein Skript in einer Seite kann auf der anderen Seite immer noch nicht direkt auf Methoden oder Variablen zugreifen, aber sie können sicher über diese Nachrichten-Passing-Technik kommunizieren.

JSONP

Seit HTML Elemente dürfen Inhalte abrufen und aus anderen Domänen ausführen. Eine Seite kann die gleichorientierte Richtlinie umgehen und JSON-Daten aus einer anderen Domäne empfangen, indem eine Ressource geladen wird, die eine JSONP-Nutzlast zurückgibt. JSONP-Payloads bestehen aus einer internen JSON-Nutzlast, die von einem vordefinierten Funktionsaufruf verpackt ist. Wenn die Skriptressource vom Browser geladen wird, wird die angegebene Rückruffunktion aufgerufen, um die verpackte JSON -Nutzlast zu verarbeiten.

Websockets

Moderne Browser ermöglichen es einem Skript, eine Verbindung zu einer Websocket-Adresse herzustellen, ohne die gleichorientierte Richtlinie anzuwenden. Sie erkennen jedoch, wann ein WebSocket -URI verwendet wird, und fügen eine ein Herkunft: Kopfzeile in die Anforderung, die den Ursprung des Skripts angibt, in dem die Verbindung angefordert wird. Um die Sicherheit der Sichtweite zu gewährleisten, muss der WebSocket-Server die Header-Daten mit einem Whitelisten von Ursprüngen vergleichen, die eine Antwort erhalten dürfen.

Eckfälle

Das Verhalten von Überprüfungen und verwandten Mechanismen mit gleicher Herkunft ist in einer Reihe von Eckfällen nicht genau definiert, z.Datei:, Daten: usw.). Dies verursachte historisch gesehen eine angemessene Anzahl von Sicherheitsproblemen, wie die allgemein unerwünschte Fähigkeiten einer lokal gespeicherten HTML -Datei, um auf alle anderen Dateien auf der Festplatte zuzugreifen oder mit jeder Website im Internet zu kommunizieren.

Zuletzt können bestimmte Arten von Angriffen wie DNS-Wiederherstellungen oder serverseitige Proxys ermöglichen, dass der Hostname-Check teilweise untergraben wird, und ermöglichen es, dass Rogue-Webseiten über andere Adressen als "wahr", kanonisch, direkt mit Websites interagieren können Ursprung. Die Auswirkungen solcher Angriffe beschränken sich auf sehr spezifische Szenarien, da der Browser immer noch der Ansicht ist, dass er mit der Site des Angreifers interagiert und dem Angreifer keine Cookies oder andere empfindliche Informationen offenbart.

Angriffe im Gesicht der gleichorientierten Politik

Selbst wenn die gleichorientierte Richtlinie in Kraft ist (ohne durch Cross-Origin-Ressourcenfreigabe entspannt zu werden), können bestimmte Cross-Origin-Computerangriffe durchgeführt werden. Webrtc Kann verwendet werden, um die interne IP -Adresse eines Opfers herauszufinden.[16] Wenn der Versuch, eine Verbindung zu einem Cross-Origin-Port herzustellen, nicht angesichts der gleichorientierten Richtlinien gelesen werden kann. Ein JavaScript kann jedoch immer noch Schlussfolgerungen darüber bringen Wir bekommen eine Auszeit. Dies bietet Möglichkeiten für das Cross-Origin-Portscanning. Darüber hinaus kann ein JavaScript sogar Fingerabdruckdienste kreuzen, indem sie Standarddateien nutzen. Zum Beispiel, wenn ein JavaScript von der Site geladen wird Evil.com Versuche, die Datei zu öffnen http://127.0.0.1/images/jenkins.pngund das Onload -Ereignis feuert dann, dann kann abgeleitet werden, dass das Opfer läuft Jenkins auf ihrem eigenen Computer. Auf diese Weise kann der Angreifer potenziell gefährdete Dienste finden, beispielsweise im internen Netzwerk, auch angesichts der gleichorientierten Richtlinien. Sollte jeder Dienst anfällig für die Forderung an Anfrage im Cross-Standort sein, können sie sogar beeinträchtigt werden.[17]

Siehe auch

Weitere Lektüre

Verweise

  1. ^ Ietf HTTP -Staatsmanagementmechanismus, April 2011
  2. ^ Kemp, John (2011-02-04). "Sicherheit im Web". Abgerufen 2018-07-24. In der gleichorientierten Richtlinie wird festgestellt, dass ein Dokument aus einem einzigartigen Ursprung nur Ressourcen aus dem Ursprung laden darf, aus dem das Dokument geladen wurde. Insbesondere gilt dies für XMLHTTPrequest -Anrufe aus einem Dokument. Bilder, CSS und dynamisch beladene Skripte unterliegen nicht der gleichorientierten Richtlinie.
  3. ^ "@Schriftart". MDN Web Docs. Abgerufen 2021-07-24. Web -Schriftarten unterliegen derselben Domänenbeschränkung (Schriftdateien müssen auf derselben Domäne wie die Seite verwendet werden), es sei denn, HTTP -Zugriffskontrollen werden verwendet, um diese Einschränkung zu entspannen.
  4. ^ "Netscape 3.0 Handbuch - Erweiterte Themen". netscape.com. Archiviert von das Original Am 2002-08-08. Abgerufen 2020-02-16. Navigator Version 2.02 und später verhindert automatisch automatisch Skripte auf einem Server auf Eigenschaften von Dokumenten auf einem anderen Server.
  5. ^ "JavaScript 1.0 - 1995". www.webdesignmuseum.org. Abgerufen 2020-01-19.
  6. ^ "Willkommen bei Netscape Navigator Version 2.0". netscape.com. 1997-06-14. Archiviert von das Original Am 1997-06-14. Abgerufen 2020-02-16.
  7. ^ "Browser Security Handbook, Teil 2". Google.com. Abgerufen 31. Januar 2014.
  8. ^ "Gleiche Ursprungsrichtlinie". W3c. Abgerufen 31. Januar 2014.
  9. ^ Lawrence, Eric. "Ieinterns - gleiche Ursprungsrichtlinie Teil 1". Abgerufen 22. Oktober 2013.
  10. ^ a b "Netscape Navigator 3.0 - Was ist neu". netscape.com. 1997-06-14. Archiviert von das Original Am 1997-06-14. Abgerufen 2020-02-16.
  11. ^ "JavaScript 1.3 Handbuch - Sicherheit". netscape.com. 2003-02-21. Archiviert von das Original am 2003-02-21. Abgerufen 2020-02-16.
  12. ^ "JavaScript 1.3 Handbuch - Sicherheit". docs.oracle.com. Archiviert vom Original am 2012-08-24. Abgerufen 2020-02-16.
  13. ^ Lepera, Scott. "Cross-Domänen-Sicherheitsnahrung". Der seltsame Zen von JavaScript. Abgerufen 4. April 2014.
  14. ^ "Netscape 3.0 - JavaScript -Handbuch". netscape.com. Archiviert von das Original Am 2002-10-03. Abgerufen 2020-02-16.
  15. ^ Erstellen von WSGI Middleware
  16. ^ Erfahren Sie die interne IP -Adresse mit JavaScript
  17. ^ Angriff des internen Netzwerks vom öffentlichen Internet mit einem Browser als Proxy anzugreifen

Externe Links