In diesem Artikel wird die js-Same-Origin-Strategie detaillierter analysiert. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Konzept: Die Same-Origin-Richtlinie ist eine wichtige Sicherheitsmetrik für clientseitige Skripte (insbesondere Javascript). Es entstand ursprünglich aus Netscape Navigator 2.0 und soll verhindern, dass ein Dokument oder Skript aus mehreren verschiedenen Quellen geladen wird.
Derselbe Ursprung bezieht sich hier auf: dasselbe Protokoll, denselben Domänennamen und denselben Port.
Essenz:
Das Wesentliche daran ist einfach: Es betrachtet vertrauenswürdige Inhalte, die von einer beliebigen Website geladen werden, als unsicher. Wenn Skripte, denen der Browser misstraut, in einer Sandbox ausgeführt werden, sollte ihnen nur der Zugriff auf Ressourcen derselben Site gestattet werden, nicht auf Ressourcen anderer Sites, die möglicherweise bösartig sind.
Warum gibt es eine Beschränkung auf die gleiche Herkunft?
Geben wir ein Beispiel: Ein Hackerprogramm verwendet beispielsweise IFrame, um die echte Bank-Anmeldeseite auf seiner Seite einzubetten. Wenn Sie sich mit Ihrem echten Benutzernamen und Passwort anmelden, kann der Inhalt seiner Seite gelesen werden Bitte geben Sie Ihre Eingaben in Ihr Formular ein, damit Sie den Benutzernamen und das Passwort leicht erhalten können.
Ajax-Anwendung:
Diese Sicherheitsbeschränkung wird in Ajax-Anwendungen verletzt.
In gewöhnlichen Javascript-Anwendungen können wir die href von Frame oder die src von IFrame ändern, um eine domänenübergreifende Übermittlung im GET-Modus zu erreichen, aber wir können nicht auf den Inhalt in domänenübergreifenden Frames/IFrames zugreifen.
Ajax verwendet XMLHTTP für die asynchrone Interaktion. Noch gefährlicher ist, dass XMLHTTP ein reines Javascript-Objekt ist, das vom Benutzer wahrgenommen wird. Daher hat XMLHTTP tatsächlich die ursprünglichen Sicherheitsbeschränkungen von Javascript durchbrochen.
Wenn wir die aktualisierungsfreien asynchronen Interaktionsmöglichkeiten von XMLHTTP nutzen möchten, aber nicht bereit sind, die Sicherheitsrichtlinien von Javascript offensichtlich zu brechen, besteht die Alternative darin, strenge Same-Origin-Einschränkungen zu XMLHTTP hinzuzufügen. Eine solche Sicherheitsrichtlinie ist der Sicherheitsrichtlinie von Applet sehr ähnlich. Die Einschränkung von IFrame besteht darin, dass es nicht auf Daten im domänenübergreifenden HTMLDOM zugreifen kann, während XMLHTTP die Übermittlung domänenübergreifender Anfragen grundsätzlich einschränkt .
Browser-Unterstützung: Der IE öffnet tatsächlich zwei Hintertüren für diese Sicherheitsrichtlinie: Er geht davon aus, dass Ihre lokalen Dateien natürlich wissen, auf welche Inhalte zugegriffen wird, sodass keine Ihrer lokalen Dateien auf externe Daten zugreift Warnung. Ein weiterer Grund: Wenn das Skript der von Ihnen besuchten Website beabsichtigt, auf domänenübergreifende Informationen zuzugreifen, wird lediglich ein Dialogfeld angezeigt, um Sie daran zu erinnern. Wenn eine betrügerische Website diese Methode verwendet, um Ihnen eine gefälschte Seite bereitzustellen, und Ihnen dann dabei hilft, sich über XMLHTTP aus der Ferne beim Server der echten Bank anzumelden. Nur einer der 10 Benutzer war verwirrt und klickte auf OK. Ihr Kontodiebstahl war erfolgreich! Denken Sie darüber nach, wie gefährlich das ist!
FireFox unterstützt dies nicht. Standardmäßig unterstützt FireFox überhaupt keine domänenübergreifenden XMLHTTP-Anfragen und bietet Hackern keine solche Möglichkeit.
Same-Origin-Strategie vermeiden:
JSON und dynamische Skript-Tags
src="http://yoursiteweb.com/findItinerary?username=sachiko&
reservierungNum=1234&output=json&callback=showItinerary" />
Wenn JavaScript-Code dynamisch ein