Cross Domain auf Fenster oder IFrame zugreifen
haefti
- javascript
0 Struppi
0 Felix Riesterer
0 Háefti
0 molily
0 Haefti
Hallo!
Ich weiß, dass diese Frag enicht zum ersten mal gestellt wird, aber ich habe noch keine befriedigende Antwort finden könne, also bitte nicht hauen, wenn ich nur zu blind war. ;-)
Es geht um Cross Domain-Problematik.
Die Situation ist folgende: Ich möchte von Domain A ein Browserfenster mit einer Seite aus Domain B öffnen. In diesem zweiten Fenster kann der User etwas aussuchen, dessen Ergebnis (im einfachsten Fall nur eine ID) ich irgendwie im ersten Browserfenster wieder übernehmen möchte, ohne die gesamte Seite des Mutterfensters neu zu laden. (also nicht einfach window.opener.location.href = <Seite von Domain A>?ID=<gewählteID>)
Folgendes habe ich erfolglos ausprobiert:
Im geöffneten Fenster window.opener.myCallbackFunction(ID) aufrufen ist nicht erlaubt.
Interessanterweise kann ich window.opener.location.href setzen, jedoch z.B. auch window.opener.name nicht auslesen.
Im Mutterfenster (Domain A) habe ich einen IFrame eingebaut. Wenn es mir nun gelänge, vom zweiten Fenster aus in diesen IFrame eine URL, die den gewünschten Paramter per GET bekommt, zu laden, könnte ich diesen im Kontext von Domain A auslesen und anschließend top.mycallbackFunction(ID) ausführen.
Leider kann ich auf window.opener.location.href oder window.opener.name nicht zugreifen, wenn ich das zweite Fenster aus dem IFrame öffne.
Das IFrame aus dem vorherigen Punkt existiert noch, aber ich öffne aus dem regulären Fenster das zweite Fenster.
Leider kann ich auch auf window.opener.iframeName.location.href oder window.opener.iframeName.name nicht zugreifen.
Mir ist ja klar, dass Cross Site Scripting regulär unterbunden wird (auch wenn die Browserhersteller massiv daran arbeiten, das mit den nächsten Versionen zu ändern), aber wieso kann ich die URL des öffnenden Fensters manipulieren, die URL eines darinliegenden IFrames aber nicht?
Habe ich hier einfach noch nicht alles ausprobiert oder ist es einfach nicht so ganz logisch? :-)
Vielen Dank für eure Hilfe!
Haefti
Mir ist ja klar, dass Cross Site Scripting regulär unterbunden wird (auch wenn die Browserhersteller massiv daran arbeiten, das mit den nächsten Versionen zu ändern), aber wieso kann ich die URL des öffnenden Fensters manipulieren, die URL eines darinliegenden IFrames aber nicht?
Weil du nicht auf den Inhalt einer fremden Seite mit JS zugreifen darfst.
Struppi.
Liebe(r) haefti,
Mir ist ja klar, dass Cross Site Scripting regulär unterbunden wird (auch wenn die Browserhersteller massiv daran arbeiten, das mit den nächsten Versionen zu ändern)
woher nimmst Du diese Information, dass Browserhersteller "mit den nächsten Versionen" Cross Site Scripting angeblich wieder möglich machen wollen? Es wurde ja bisher mit Hochdruck daran gearbeitet, dass man das aus Sicherheitsgründen eben gerade nicht kann!
Liebe Grüße aus Ellwangen,
Felix Riesterer.
woher nimmst Du diese Information, dass Browserhersteller "mit den nächsten Versionen" Cross Site Scripting angeblich wieder möglich machen wollen? Es wurde ja bisher mit Hochdruck daran gearbeitet, dass man das aus Sicherheitsgründen eben gerade nicht kann!
Okay, meine Darstellung ist nicht ganz richtig.
Beim IE 8 gehts "nur" um XDomainRequests, wobei ich noch nicht ganz verstanden habe, warum die auf einmal abgesichert sein sollen.
So weit ich das zumindest verstanden habe, scheint es nicht via W3 Access Control wie beim Firefox 3 zu laufen.
Hallo,
Mir ist ja klar, dass Cross Site Scripting regulär unterbunden wird (auch wenn die Browserhersteller massiv daran arbeiten, das mit den nächsten Versionen zu ändern)
Cross-Site-Scripting wird immer unterbunden werden, weil die Same Origin Policy das wichtigste JavaScript-Sicherheitskonzept ist. Das einzige, was es geben wird, sind Cross-Domain-Messages und Cross-Domain-XMLHttpRequest. Beide arbeiten mit Opt-in.
wieso kann ich die URL des öffnenden Fensters manipulieren, die URL eines darinliegenden IFrames aber nicht?
Weil letzteres ein viel größeres Sicherheitsproblem darstellt. Der Benutzer könnte dadurch noch einfacher getäuscht werden.
Habe ich hier einfach noch nicht alles ausprobiert oder ist es einfach nicht so ganz logisch? :-)
Es ist völlig logisch.
Mathias
Cross-Site-Scripting wird immer unterbunden werden, weil die Same Origin Policy das wichtigste JavaScript-Sicherheitskonzept ist. Das einzige, was es geben wird, sind Cross-Domain-Messages und Cross-Domain-XMLHttpRequest. Beide arbeiten mit Opt-in.
Okay, danke!
Zugegebenermaßen freue ich mich da doch schon ziemlich auf die W3 Access Controls.
Habe ich hier einfach noch nicht alles ausprobiert oder ist es einfach nicht so ganz logisch? :-)
Es ist völlig logisch.
Na gut, ich lass mich überzeugen. :-)