Chromium Blog: Writing Extensions More Securely
Chromium Blog: More secure extensions, by default
Chrome 18でManifest Version 2を指定した場合、インラインscriptが使えない。evalも使えない。Background Pagesの仕様も変わっている。
つまり、今までエクステンションで、
<html xmlns="http://www.w3.org/1999/xhtml" > <head> <script type="application/javascript"> /* Javascriptのコード */ </script> </head> </html>
としていた場合、Javascriptのコードを別のファイルに分離して、
/* sample.js*/ /* Javascriptのコード */
それをscript要素のsrc属性で読み込まなければならない。
<script type="application/javascript" src="sample.js"></script>
セキュリティに関しての変更もある。デフォルトでは、パッケージ内のリソースしか使えない。詳しくは、Content Security Policy (CSP) - Google Chrome Extensions - Google Codeを参照。
とりあえず、青空縦書きリーダーに必要な変更をした。おそらく動くはずだ。background pageだけは、Chrome 18にならないと検証できない。そのため、Chrome 18のstableがリリースされるまでは、アップデートはない。
しかし、インラインJavascriptの禁止はかなりでかい変更だ。対応は、単に別ファイルに移すというトリビアルな作業とはいえ、かなりのエクステンションが、ちょっとしたことはインラインJavascriptで処理していただろうから、対応は面倒だ。しかし、必要でもある。インラインJavascriptを一律に禁止して、デフォルトのセキュリティで、パッケージ内のリソースしか読み込まないようにしておけば、エクステンションのセキュリティは大幅に上がる。外部のリソースに頼るということは、DNSが乗っ取られたり、あるいは中間に悪意ある者がいた場合(オープンなWifiを信用してはならない)、そのリソースを差し替えられてしまうからだ。インラインjavascriptの全面禁止は納得できる。しかし、今まで普通に使えていて、サンプルまでインラインJavascriptを多用していたのに、いきなり全面禁止はつらい。もちろん、deprecatedなマニフェストバージョン1を使っていれば、今までどおり使える。しかし、将来を考えたエクステンションは、バージョン2に移行するべきである。
No comments:
Post a Comment