セキュリティ
こちらでプヨぷよ氏が書かれています。
IHTMLWindow2に渡したオブジェクトはページ内のスクリプトからもアクセスできるので、ISleipnirを渡してしまうとmixiで漏らしたように割と洒落にならないセキュリティホールが出来てしまう。
ローカルで試してみました。
ISleipnirを渡すだけのSeaHorseスクリプトを作成。
ボタンをクリックするとこうなりました。
確かにやばいです。(汗)
プヨぷよ氏が書かれているようにこんなJavaScriptが仕込まれているサイトはない(多くもならない?)だろうとは思いますが、少なくてもISleipnirを渡すSeaHorseスクリプトを不特定多数のサイトで使うのはだめですね。いたずらでいきなり全タブを閉じるとかされたりするかも。その程度で済めばかわいいものですが。信用できそうなサイト以外での使用はダメです。
変数にアクセス
当然ながらサイト側のグローバルな変数があるとSeaHorse側で弄れます。また逆に、SeaHorse側の意図しない動作になるともいえますね。
このあたりはクロージャを使えば回避できるとは思います。
僕はそのあたりのことがイマイチ勉強不足です。
うろ覚えですが
FireFoxのGreaseMonkeyでも似たような問題があったような気がします。
それでunsafeWindowができたように記憶しています。
SeaHorseプラグイン自体にもそういった仕組みが必要なのかもしれません。
今のところ
スクリプトを書く側が対策をするしかないでしょう。
僕にはそこまでの技量があるとは思えないので自作スクリプトを晒すのは控えた方がいいかなぁ。
折角、今日(仕事用ですが)非同期XHRができたのに(涙)