2011-07-07

WebGLにおけるクロスドメイン問題

Chromium Blog: Using Cross-domain images in WebGL and Chrome 13

クロスドメインを禁止することは重要である。もしクロスドメインが完全に許されているのならば、任意のドメインのWebサイトから、閲覧者のログイン済みのGMailやTwitterなどの他のサービスにアクセスできてしまう。

これは、画像や動画といったリソースでも同様である。例えば、あるサイトは、ユーザーに応じて画像や動画を生成するかもしれない。その場合、Javascriptから画像の内容を取得できてしまうのは、セキュリティ上危険である。img要素は、クロスドメインの画像を表示できる。しかし、Javascriptから画像の内容を取得する方法はない。

img要素なら問題はないし、2Dのcanvasは、他のドメイン下の画像や動画が描画されたときは、ピクセルが得られないようになっている。

ところが、WebGLの場合は、単にピクセルを得られないようにするというのでは、不十分である。なぜならば、WebGLはシェーダーが使えるからだ。シェーダーを使って、ピクセルごとに処理時間を変えるなどすれば、リソースの内容をほぼ正確に推測できてしまう。これはまずい。

そこで、WebGLのテクスチャーとして使うリソースを、他のドメインでホストする場合は、その他のドメインのサーバーが、Cross-Origin Resource Sharingを実装しなければならない。クロスドメインは問題ないということを証明できるのは、自分ではないのだ。

No comments: