セキュリティを考える。JavaScriptによるJavaScript実装「js.js」
js.jsはJavaScriptによるJavaScript実装です。サードパーティのJavaScriptをサンドボックス化し安全に実行します。
最近ブログパーツやシェアボタンをはじめとして外部サービスのJavaScriptコードを埋め込んで動作させたりすることが増えています。しかし外部のサービスにセキュリティ上の問題がある可能性もあります。そこで作られているのがJavaScriptによるJavaScript実装であるjs.jsです。
コードです。“1 + 1"を実行しています。
Tweetボタンを表示するデモです。Twitterから送られるものをそのまま実行する訳ではないのが肝です。
js.jsは文字列のJavaScriptコードを評価し、安全に実行できます。サンドボックス状態で実行するのでセキュアです。ただし完全に独立する訳ではなく、コールバックや内部の関数を呼び出せるようにすることもできます。処理速度が遅くなってしまうのは難点ですが、面白い試みです。
エンジンはSpiderMonkeyをLLVMに変換し、emscriptenを使ってJavaScriptにしています。なおネイティブのSpiderMonkeyに比べて200倍くらい遅いそうです。js.jsはJavaScript製、Apache License 2.0のオープンソース・ソフトウェアです。
MOONGIFTはこう見る
JavaScriptを悪用するとクリック詐欺につなげたり、DDOSアタックの踏み台にさせたりすることもできます。利用が進んでいるだけにそうした悪用が原因で使われなくなったりするのは避けなければなりません。XSS対策はどのようなサイトであってもしっかりと行う必要があるでしょう。
GoogleやMicrosoftなどではブログパーツやiGoogleでのガジェット実行についてセキュリティチェックを自動で行っています。より自由度を高めつつ、セキュアにするための仕組みはまだまだ考えるべきポイントがありそうです。