Subspace: Secure Cross-Domain Communication for Web Mashups:

http://ajaxian.com/archives/subspace-enabling-trusted-cross-domain-ajax
http://www2007.org/papers/paper801.pdf

これ読んだときは単純に「へー、これでJSONPみたいなのを気軽にできるんだったらまあいい話なのかなあ」とか思ったんだけど、あくまでJavaScript読み込み元のページへの無制限リソースアクセスができちゃうのをSandboxにとどめるための手法ってだけなんで、たとえばブラクラみたいなコードをダウンロードしちゃったときはブラウザ全体でアウトになるから、やっぱそのレベルまで考えるんであれば使えないよなあ。

まあ言ってることの有用度はともかく、さまざまなクロスドメインコミュニケーションの手法とかが整理されていて、そういう意味でいい資料だとおもう。


とりあえずCross Domain Code Accessのところで、Closureの取り扱いに関するブラウザのセキュリティモデルの違いが整理されてるのでチェックした。

Frameを介したデータ交換で、ClosureがどっちのSecurity Privillegeで取り扱われるかを考えておく必要がある。これはブラウザ依存。

最初にDynamic Authorizationと呼ばれる方式。OperaおよびSafariではこちら。

For example, if Site A calls a closure that was obtained from Site B, the closure would be able to access any browser state (DOM ob jects, cookies) associated with Site A, but not Site B.

次にStatic Authorization。こちらはIEおよびFirefoxで。

For example, if Site A calls a closure that was obtained from Site B, the closure would be able to access any browser state associated with Site B, but not Site A.

Dynamic Authorization は渡ってきた文字列をevalすることでStatic Authorizationなブラウザでもsimulateできるけれど、逆は不可。

Frame間のデータ交換の際、Static Authorizationではコールバック関数でevent drivenに実装できるが、Dynamic Authorizationなブラウザではそれができないので、回避策としてSecurity Exceptionをcatchしたら、プロパティに対してpollingをかけるような実装にする。