2016-05-21 7 views
0

Ich sehe die Sicherheitsrisiken mit Cross-Domain-Ajax-Aufrufen,
aber ich denke, das eigentliche Problem sind die Cookies, die der Browser
automatisch an das Ziel Cross-Domain senden.Samt Origin Policy Lösungen

Warum kann der Browser nicht einfach Cookies im Fall von Cross-Domain Js Anfrage senden anstatt diese Anfrage insgesamt zu blockieren?

Ich hoffe meine Frage ergibt Sinn.

EDIT:

aus: https://en.wikipedia.org/wiki/Same-origin_policy

ist zwar richtig, die JavaScript hat keinen direkten Zugriff auf die Bank Session-Cookie, aber es könnte noch Anfragen an den Banking-Seite senden und empfangen mit dem Sitzungscookie der Bankseite, im Wesentlichen , der als normaler Benutzer der Bankseite fungiert. das Versenden von neuen Transaktionen in Bezug auf, auch CSRF-Schutz durch die Banking-Seite haben keinen Effekt, da das Skript einfach die gleichen wie der Benutzer tun kann, tun würde

So Angenommen, ich bin auf Facebook angemeldet und in der Zwischenzeit besuchen eine mislicious Website, die Cross-Site-Anfragen an Facebook verwenden, um Informationen über mich zu stehlen, Ich meine, der einzige Grund, warum es tun könnte, ist, weil ein legitimer Cookie in den Anfragen durch den Browser enthalten ist, liege ich falsch?

Antwort

0

Sie haben eine Verwirrung der Ideen.

Ein Cookie ist eine zwischengespeicherte Information, die auf der Clientseite gespeichert wird. Einfach gesagt, es sind Daten, die vom Browser verwaltet werden und wie ein bestimmter Browser das tut. Zum Beispiel IE speichert Cookies in separaten Textdateien, Firefox verwendet eine einzige Datei und Crome verwendet SQLite3-Datenbank.

Ich empfehle Ihnen zu lesen: Why is the same origin policy important?

Sie Cross-Domain-Anfragen Erhalten Sie senden können und es gibt mehrere Möglichkeiten. Ich habe einen Proxy verwendet, der die erforderlichen Header oder nur Jsonp hinzufügt. Zum Beispiel in .net letzteres erfordert, dass Sie einen Json-Formatierer hinzufügen, der die json-Rückruffunktion erhält.

Wenn Sie eine 2-Wege-Kommunikation mit der Webseite haben, ist dies nicht erforderlich. Sie können den Status auf der Serverseite verwalten und Server-seitige "Push" -Anfrage nach Ihrem Willen ausführen. Vor html5 brauchte man Komponenten, um das zu tun: Java Applet, Flash, Silverlight oder ....

Ich hoffe meine Antwort macht Sinn für Sie.

+0

siehe meine Bearbeitung. – GionJh