Firefox 57 & NoScript 10 使いこなしガイド(第1版)
注: 本記事の末尾に役立つアップデート情報があります。ぜひ最後までご覧ください。
Firefox 57がリリースされました。それと同時に、大人気Firefoxアドオン「NoScript Security Suite」初のWebExtension版であるNoScript 10も登場しました。この全面刷新されたアドオンは、数多くの変更とともに、ユーザーにとって少なからぬ戸惑いをもたらしています。5.x系までのNoScriptとは動作が異なり、驚いたり混乱したりしている方も多いはず。本チュートリアルでは、その霧を少しでも晴らすお手伝いをします。
なお、これは本ガイドの第1版です。NoScriptは今後も変更・改善が続くため、更新や続編を予定しています。できるだけシンプルで分かりやすい解説とヒントを提供し、読者の皆様と筆者自身の両方にとって快適な道しるべとなるよう努めます。NoScriptはWebセキュリティに不可欠な存在であり、今なおFirefoxを使い続ける最大の理由だと筆者は考えています。だからこそ、このハウツーガイドをまとめることにしました。それでは始めましょう。
NoScript 10 の基本画面
新しいUIは、従来の5.x系とはまったく異なるものです。旧来のクラシックなNoScriptは縦型の階層構造を採用しており、各サイトが個別に一覧表示され、「許可」または「一時的に許可」を選択できました。さらに深いシステムメニューからは、ホワイトリスト登録や特定要素のブロックなど、きめ細かい制御が可能でした。
一方、NoScript 10(NSS 10)は、uMatrix拡張機能に似たマトリクス形式のグリッドを採用しています(uMatrixについては別記事で取り上げます)。サイトは行ごとに表示され、ドメイン名の横には現在5つのボタンが並んでいます。いずれかのボタンをクリックすると、そのドメインに対する特定のスコープが切り替わり、詳細情報を確認することもできます。
スコープの種類
NoScript 10のスコープは以下の4種類+αで構成されています。
Default(デフォルト)
他のどのスコープにも該当しないサイトは、すべてこのスコープに一致します。利用可能な8つの要素カテゴリ(script、object、media、frame、fetch、other、font、webgl)のオン/オフがここで決定されます。初期設定では、script、object、media、frame、fetch、other が許可され、font と webgl は許可されていません。
重要な注意点:初期状態では「スクリプトが許可」されています。
これはNoScript 5.xとの大きな違いの一つであり、セキュリティ重視の方なら必ず変更すべきポイントです。変更方法は後ほど詳しく説明しますので、もう少しお付き合いください。
Trusted(信頼済み)/ Untrusted(未信頼)
Trusted は、登録されたサイトに対してすべての要素を許可します。逆に Untrusted は、登録されたサイトに対して一切の要素を許可しません。
Custom(カスタム)
4番目のカテゴリである Custom では、特定のドメインに対して8つの要素のうち任意のものの許可状態を個別に切り替えられます。
パドロック(鍵)アイコン
鍵アイコンでは、上述の4つのスコープのルールを「SSL/TLSで保護された接続(https://)のみ」に適用するか、「HTTPを含むすべて」に適用するかを指定できます。つまり、同じドメインに https:// 版と https:// 版が存在する場合、それぞれで異なる挙動になる可能性があるということです。
仕組みはどうなっているのか?
実は、この仕組みは5.x系とは完全に正反対です。5.x系では権限は「サイト単位」でした。しかしNoScript 10では、バックエンドに保存されるデータ構造が変わったため、権限は「スコープ単位」となり、各スコープにサイトが所属する形になっています。
- NoScript 5.x:サイト → 権限
- NoScript 10.x:スコープ → 権限 → サイト → 権限の上書き
これが厄介なのは、特定のサイトの設定を変更すると、スコープ全体のデフォルト設定が変わってしまうからです。たとえば dedoimedo.com にアクセスして「スクリプトを許可する」カスタムルールを作ると、別のサイトにアクセスした際にも同じルールが適用されていることが分かります。編集内容がスコープ全体に波及するためです。これは設計上の問題であり、早急な改善が望まれます。
一時的な許可(方法1)
この問題への対策として用意されているのが「一時的に許可」オプションです。Custom の欄には小さな時計アイコンがあり、8つの要素について希望する状態を選んだ後にこのボタンをクリックすると、権限が一時的なものになり、ブラウザを閉じて開き直せば元の状態に戻るはずです。
※ CUSTOM という表記の右側にある時計アイコンに注目してください。
ところが残念ながら、執筆時点ではこの一時許可モードは正常に機能していないようです。先に時計ボタンを押してから権限を設定しても、その逆の手順でも、ブラウザを再起動すると変更内容がカスタムスコープ全体に恒久的に保存されてしまいます。これはバグと思われ、修正が必要です。
一時的な許可(方法2・アップデート)
Krusty というユーザーから、サイトを一時的に許可する代替手段が提案されました。Custom スコープを使う代わりに、TRUSTED スコープを選んでから時計アイコンをクリックして一時許可する方法です。個々の要素設定には触れません。手動でページを再読み込みするか、概要ウィンドウを閉じると、ページが自動的に再読み込みされます。
筆者の環境では3件中2件で成功し、ブラウザ再起動後には一時的な権限が消えていました。完璧ではありませんが、正しい方向への一歩前進と言えます。ありがとう、Krusty!
オプションとJSON設定
オプション/設定メニューを開くと、比較的限られた調整項目が並んでいます。5.x系から移行した場合は、ホワイトリストに登録していたサイトがすべて引き継がれているはずです。UI上では各サイトの有効/無効を切り替えられますが、削除はできません。ここでは、4つのスコープのうちどれをデフォルトにするかを変更したり、リストから完全に除外したりすることが可能です。
デバッグ(Debug)機能
設定画面の下部にはDebug ボタンがあります。これを選択すると小さなテキストエディタが開き、NoScriptのJSON設定を直接編集できます。各スコープのデフォルト状態の変更や、ホワイトリストエントリの削除もここから行えます。例えば以下のように:
{
"DEFAULT": {
"capabilities": [
"frame",
"other",
"fetch",
"media",
"object"
]
},
"TRUSTED": {
"capabilities": [
"script", "object", "media", "frame",
"font", "webgl", "fetch", "other"
]
},
上記の例では、DEFAULT スコープから "script" の行を削除しています。これはUIからも操作可能で、任意のドメインを選択して script のチェックを外せば、DEFAULT スコープに属するすべてのサイトに反映されます。直感的とは言い難い仕様ですが、覚えておくと便利です。
同様に、ドメインのエントリも以下のような形式で保存されています:
"sites": {
"trusted": [
"§:addons.mozilla.org",
"§:afx.ms",
"§:ajax.aspnetcdn.com",
"§:ajax.googleapis.com",
"§:bootstrapcdn.com",
"§:code.jquery.com",
信頼したくないサイトがあれば、該当行を削除するだけでOKです。下のスクリーンショットの通り、UNTRUSTED スコープには現時点で要素(ケイパビリティ)もサイトも登録されておらず、custom も空の状態です。
NoScript 10 の活用のコツと改善提案
率直に言って、現時点のNoScript 10はかなり扱いづらいのが実情です。サイトの状態を切り替えるのに、5.x系のシンプルなミドルクリックよりはるかに手間がかかります。この操作方式はぜひ復活させてほしいところです。さらに、変更がサイト単位ではなくスコープ全体に及ぶため、権限変更の実用性が大きく損なわれています。一時許可も現状では期待どおりに動作しません。
ページの自動再読み込み機能は健在ですが、全体的な操作フローは以前より洗練度を欠いています。開発者の Giorgio Maone 氏には、スコープごとに独立した設定ファイルを導入し、設定を以下のような形式で管理することを提案したいと思います:
{
"DOMAIN": {
"capabilities": [
"frame",
"other",
"fetch",
"media",
"object"
]
},
どのドメインにも一致しない場合は DEFAULT スコープが適用されます。一時許可については、ドメイン名を参照せず、ブラウザ再起動時に消去される TEMP-ALLOW という専用スコープを使うのが理想的でしょう。
もちろん、見た目の面での改善も求められます。UIは文字サイズを大きくし、要素間の余白を広げるべきです。各ドメインには、既存のスコープと新しい「一時許可」スコープを切り替えるトグルを設け、さらに「すべて許可」のグローバルボタンも追加するとよいでしょう。スコープ自体の設定は、メインのオプション画面で完結できるのが望ましい形です。
まとめ
NoScript 10は、Firefox Quantum のリリーススケジュールに間に合わせるために、やや性急にリリースされた感は否めません。完成品とは言い難く、WebExtensions構想が抱える混乱をも浮き彫りにしています。とはいえ、NoScriptは今後も進化・改善を続け、見た目こそ違えど機能面では旧来の挙動に追いつくと筆者は確信しています。
現時点で最も重要なのは、すべてのサイトで一時許可機能が使えること、そしてサイト単位の調整がスコープ設定に影響を与えないことです。JSONの階層構造は、最小粒度のコンポーネントである「訪問中のドメイン」を基準に設計されるべきでしょう。
第1版のガイドは以上です。ご質問があればお気軽にどうぞ。回答は随時こちらに追記します。アップデート情報も近日公開予定ですので、第2版ならびに本トピックに関する続報にご期待ください。
アップデート(2017年11月23日)
第2版を執筆する前に、重要なアップデート情報を本ページに追記する方が賢明と判断しました。なんと、本記事を公開した翌日に、Giorgio Maone 氏がNoScript拡張機能を更新し、操作性が大幅に向上していたのです。
新しく再設計されたUIは4つのカテゴリ構成を維持しつつ、一時許可ボタン」「一時的権限の取り消し機能」「設定画面を開く専用アイコンが新たに追加されました。クリック回数が1回増えた点(5.x系では拡張機能アイコンのミドルクリックで一括一時許可が可能でした)を除けば、動作は以前のバージョンとほぼ同等です。細部にはまだ微妙な差異がありますが、私たちが愛し、必要とし、Firefoxを使い続ける理由となってきたあのアドオンが戻ってきたのです。素晴らしい進展です。さらなる続報をお楽しみに。
それでは、また次回。
-
Firefox 4 vs Internet Explorer 9 徹底比較レビュー
さあ、覚悟してください!こんな対決記事を書くことになるとは思いもしませんでしたが、いざ始めましょう。あらゆるサプライズは起こりうるものです。Microsoftが一流の高性能ブラウザを届けてくることも、その一つです。社内での厳しい指導と減給が効いたのでしょうか。さて数日前、Firefox 4ベータの詳細なプレビューが公開され、その翌日にはInternet Explorer 9ベータが登場しました。どちらも非常に期待できる製品です。Firefox 4は長い歴史を持つ優れたブラウザの系譜を受け継ぎ、従来の精神を保ちながらさらに進化を遂げています。一方、Internet Explorer 9は革命です
-
Firefox 3.1 Beta 3のメモリ使用量を徹底検証 ― LinuxとWindowsでの実測レポート
先日、Firefox 3.1 Beta 3をレビューしました。JavaScriptパフォーマンスの大幅な向上、使い勝手とプライバシーに関する新機能、将来のHTMLマルチメディア要素への対応など、非常に魅力的なリリースです。ところが、あの記事ではメモリ使用量については一切触れていませんでした。 それには、ちゃんとした理由があります。 アプリケーションのメモリ使用量を正確に測定するのは、実は非常に難しい作業です。せいぜい得られるのは「推測」や「目安」程度で、しかも主観的かつ限られた要因に基づくもので、ほとんど役に立たないことも珍しくありません。多くの人は、タスクマネージャー、Process Exp