(NoScript)使い方

メインコンテンツへスキップ
Categories
< Back
You are here:
Print

(NoScript)使い方

(訳者まえがき)No Scriptの使い方について開発者サイトの解説の翻訳です。(2026/8/24アクセス)


はじめに

アイコンのピン留めと権限の設定(Chromium)
導入 / サイト分類動作ページ

インストール時のプロンプト、あるいは後で拡張機能マネージャーのオプション画面で、NoScriptがプライベート/シークレットウィンドウで実行されることを許可するのを忘れないようにしよう。

そうしないと、最も必要な場面でNoScriptが見つからなくなってしまう。

同じ理由で、現在のページの権限の状態を視覚的に確認し、素早く設定できるようにするため、NoScriptのアイコンをツールバーにピン留めしておくのがよいだろう。

インストール後、ウェルカムページで、NoScriptが未分類のサイトに初期の信頼レベルをどのように割り当てるかを決定できる。3つの「サイト分類動作」(または使いやすさのレベル)から選択でき、最も手間がかかる(ただし最も安全で推奨される)ものから、最も便利なものまである:

  • STRICT / デフォルト拒否 – 従来から推奨され、最も安全なNoScriptの動作だ。未分類のサイトはDEFAULTとしてマークされる。スクリプトを含む潜在的に有害な機能は無効化される。NoScriptのインターフェースを開き、信頼できるサイトにTRUSTEDのマークを付けることで手動で有効化したり、CUSTOMを選択して機能をさらにカスタマイズしたりできる。
  • EASIER / Auto – セキュリティと利便性のバランスをとった設定:ナビゲーションバーにアドレスが表示されるトップレベルサイトは、すでに手動で分類されていない限り、自動的に一時的TRUSTEDに昇格する。サードパーティのサイトについては、依然として手動で分類する必要がある。クロスサイト保護は引き続き適用される。
  • EASIEST / デフォルトで許可 – 最も制限の緩い動作:分類されていないトップレベルサイトは一時的にTRUSTEDに昇格され、そのトップレベルサイトで有効化された機能は、そのサイトの下位にある分類されていないすべてのサブリソースに自動的に適用される。「UNTRUSTED」およびCUSTOMとしてすでに分類されているサイトは影響を受けない。クロスサイト保護は引き続き適用される。

NoScriptツールバーアイコンをクリックする

インストール後、NoScriptに素早くアクセスできる:

  • デスクトップOS上では
    1. NoScriptツールバーアイコンを左クリックするか…
    2. …任意のウェブページを右クリックしてNoScriptのコンテキストメニュー項目を選択するか(ツールバーが非表示になっているポップアップウィンドウで特に有用)…
    3. …あるいはAlt+Shift+N キーボードショートカットを使用する。
  • Android版Firefoxでは、Firefoxのメインメニューからアドオンを選択し、NoScriptのエントリをタップする。

信頼レベル

NoScriptのポップアップUIを使用すると、任意のウェブサイトやサブリソースのオリジン(例:「cnn.com」や「ads-twitter.com」)に対して、4つのプリセット信頼レベルのいずれか、またはサイトごとにカスタマイズされたレベルを割り当てることができる。

NoScriptのポップアップでの信頼レベルの操作

  • DEFAULTは、その名の通り、NoScriptがまだ設定されていないすべてのWebサイトに対して自動的に適用されるフォールバックの低い信頼レベルだ。これにより、初めてアクセスする未知のサイトが、ユーザーに対して有害な動作を行うことを防ぐことができる。
  • Temp. TRUSTEDは、動作させるためにJavaScriptやその他のアクティブな(そして潜在的に有害な)機能を有効にする必要があるサイトに割り当てられる高い信頼レベルだ。Temp.は「一時的」を意味し、ブラウザを閉じたり、一時的な権限を取り消すボタンを使用したりすると、このサイトの信頼レベルはすぐにDEFAULTにリセットされる。これは、今すぐ利用する必要があるが、毎日アクセスする可能性が低いサイトを暫定的に有効にするのに適した方法だ。また、「このページのすべてを一時的に『TRUSTED』に設定」ボタンを使用することで、ポップアップUIに現在表示されているすべてのサイトにこのレベルを割り当てることもできる。
  • TRUSTEDは恒久的な高い信頼レベルであり、JavaScriptやその他のアクティブな機能を有効にし、ブラウザの再起動後も設定が維持される。本当に信頼でき、頻繁に利用するサイトにのみ使用すること。
  • UNTRUSTEDは信頼レベルゼロであり、すべての機能(プレーンなHTMLフレームや代替<noscript>コンテンツのレンダリングを含む)をブロックする。ブラウザで絶対に許可したくないサイトにフラグを立てるのに役立つかもしれない。
  • CUSTOMは、scriptobjectmediaframefontwebglfetchpingnoscriptunrestricted CSSotherといった個々の機能をオン/オフすることで、サイトごとに細かく調整できる特別なレベルだ。サイトが使用を試みたがNoScriptによってブロックされた機能は、赤色で強調表示される。このレベルの一時的/恒久的な動作は、小さな時計型のトグルで制御される。

コンテキスト別ポリシー

例:Twitterの埋め込みタイムラインに対するコンテキスト別ポリシー

コンテキスト別ポリシーを使えば、特定のサイトに対して、そのコンテキスト(つまり、トップレベルのサイト、すなわちナビゲーションバーに現在表示されているアドレス)に応じて、異なる権限(NoScriptの用語では「異なる機能を有効にする」)を割り当てることができる。

例えば、maone.netにアクセスしているときのみ(埋め込まれたツイートフィードを読むために)twitter.comからのスクリプトを有効にし、それ以外の場所では無効にしたい場合があるだろう。これは、Twitterがどこに行っても自分を追跡することを好まないためである:

  1. maone.netにアクセス中に、NoScriptのポップアップを開き、twitter.comのポリシーとして「CUSTOM」を選択する。新しいドロップダウンボックスが表示され、初期設定は「ANY SITE」になっている。
  2. 「ANY SITE」でTwitterに使用させたくない機能(例:スクリプト)をすべて削除する(初めて「CUSTOM」を選択すると、以前に選択されていたプリセットの機能がコピーされるため、もし「DEFAULT」だった場合は、そのままで問題ない)。
  3. 次に、ドロップダウンから…maone.netを選択し、script、fetch、frame(赤線で囲まれた機能。これらはtwitter.comに必要とされる機能だ)を有効にする。

これで完了だ。twitter.comのスクリプトは、表示されているメインサイトがmaone.netである場合にのみ実行が許可される。Twitterのスクリプトやサブドキュメントを正常に動作させたいウェブサイト(twitter.com自体を含む)であれば、どこでもこの手順を繰り返すことができる。気が変わった場合は、ポップアップ(現在のコンテキストのみ)から、あるいはNoScript オプション>サイトごとの権限パネルから、以前に「カスタム」権限デッキで設定したコンテキストポリシーのすべてまたは一部をリセットできる。このパネルには、設定済みのすべてのコンテキストサイトに加え、ANY SITEというデフォルトが、トップページが一致する場合にこれらの機能を有効にする…というドロップダウンに一覧表示されている。

プリセットのカスタマイズ

「DEFAULT」プリセットのカスタマイズ。

推奨はされないが、上級ユーザーはNoScript オプション>一般>プリセットのカスタマイズから、組み込みのプリセットをカスタマイズすることもできる。変更された機能の権限は、その信頼レベルプリセットが割り当てられている、または今後割り当てられるすべてのサイトに自動的に適用される。

LAN保護

簡単に言えば、LAN機能は、パブリックインターネット(別名:ワールドエリアネットワーク/WAN)から送信されたドキュメントが、ローカルエリアネットワーク(LAN)内のホストにリンクを張ったりリクエストを送信したりすることを許可するものだ。これは現在可能な動作とほぼ同じであり、いわゆるクロスゾーンCSRF/XSS攻撃、いわゆる「ルーターハック」を可能にしてしまう。

これを無効にしておくことで(DEFAULTおよびUNTRUSTEDプリセットの工場出荷時設定)、「Classic」NoScriptのApplication Boundaries Enforcer(ABE)機能を再現できる。例外を設定する際にABEのファイアウォールのようなルールをいちいち確認する手間が省け、LAN機能のチェックボックスをオンにするだけで済むようになった。

なお、この機能はTor BrowserおよびMullvad Browserでは、最低レベル(「Standard」)を含むすべてのセキュリティレベルでデフォルトで無効になっている。

サイトごとの設定エディタ

サイトごとの権限設定(ライトスキーム)

通常は、ポップアップUIから現在のサイトとそのサブリソースに対して、その場で信頼レベルを割り当てる。

しかし、以前に設定したサイトに別の信頼レベルを割り当てたり、実際にアクセスせずに新しいサイトを設定したりしたい場合もあるだろう。

そのためには、NoScript オプション>サイトごとの権限パネルを使用すればよい。NoScriptに特定のサイト設定を「忘れさせる」には、そのサイトに「DEFAULT」プリセットを割り当てるだけでよい。

制限の一括無効化

現在のタブでの制限を無効化

異なるウェブサイト間を複数回リダイレクトする複雑なワークフローを急いで処理している際、何があっても成功させなければならない場合がある。

一例として、ECサイトから1つ以上の決済処理業者のWebサービスへと遷移するクレジットカード決済が挙げられる。

このような場合、「このタブで制限を無効にする」ボタンを使用することで、現在のタブが閉じられるまで、そのタブに読み込まれているすべてのサイトに対して、通常NoScriptが適用するすべての制限を一時的に緩和することができる。

さらに極端な(そして推奨されない)方法として、「制限をグローバルに無効にする(危険)」ボタンがある。これを使用すると、XSSフィルタのみを有効にしたまま、あらゆるサイトやタブでNoScriptが恒久的に無効化されることになる。絶対に実行してはならない!

クロスサイト保護

NoScriptは、スクリプトブロックの中核機能とは独立した保護メカニズムも提供している。特に注目すべきは、そのXSSフィルタータブ間ID漏洩防止機能である。

XSSフィルター

NoScriptのXSS警告ダイアログ

NoScriptのXSSフィルター(「インジェクションチェッカー」とも呼ばれる)は、ウェブブラウザで利用可能なものとしては最初のものであり、常に最も効果的なものとなっている。これは、特定の(悪意のある可能性のある)Webサイトから発信されたリクエストが、別のWebサイトにコードを注入・実行することを防ぐものであり、この攻撃はクロスサイトスクリプティング(XSS)として知られている。不審なリクエストが検出されると、警告ダイアログが表示され、ユーザーは一時的または恒久的にそれをブロックするか許可するかを選択できる。例外設定はNoScriptのオプション>詳細>XSSから管理できる。

タブ間ID漏洩防止

NoScriptのタブ間ID漏洩防止(または「TabGuard」)は、Mojtaba Zaheri、Yossi Oren、Reza Curtmolaによって2022年8月のUsenix Securityで発表されたキャッシュサイドチャネルを介した標的型匿名化解除攻撃に対する実験的な対策である。

NoScriptの「潜在的なID漏洩」ダイアログ

これは、著者らが防御策として提案したブラウザ拡張機能「Leakuidator+」から大まかに着想を得ているが、FirefoxやTorブラウザとの統合性を高め、まだ対応されていない攻撃の亜種に対する保護を提供するように設計されている。トリガーされた場合、つまり関連するタブ間のクロスサイトリクエストが発生した場合、TabGuardはリクエストから認証ヘッダーを削除し、アイコンの近くに赤いTGバッジを表示する。新しいタブで読み込まれたウェブサイトから予期せずログアウトされ、このバッジが表示されている場合は、手動でページを再読み込みするか、任意のリンクをクリックするだけで、認証は自動的に復元される。タブ間のクロスサイトPOSTリクエストという稀なケースにおいてのみ、事後的に一貫して再現できない可能性があるため、TabGuardは「潜在的なID漏洩」という警告を表示して読み込みを一時停止し、ユーザーに「匿名で読み込む」 (攻撃は防げるが、対象サイトからはログアウトされる)か、「通常通り読み込む」のいずれかを選択できるようにする。後者は、オンライン決済、シングルサインオン、サードパーティの認証システムなど、正当なクロスサイトワークフローで必要となる場合がある。この保護機能は、プライベートブラウジングウィンドウ(したがってTorブラウザやMullvadブラウザでも)ではデフォルトで有効になっているが、NoScriptオプション>詳細設定パネルからグローバルに無効化または有効化できる。

キーボードショートカット

以下のキーボードショートカットを使用して、NoScriptのUIを開いたり操作したりできる:

Alt+Shift+N     開始(NoScriptポップアップを開く)
矢印キー/Tab      移動
DEL/BKSPC/0     デフォルト
+               信頼済み
-               信頼不可
C               カスタム
T               一時
S               HTTPSロック
HOME            ツールバーへ移動
ESC/ENTER       UIを閉じる
R               UIを閉じずに現在のページを再読み込み
Shift+G         制限を全体的に無効にする
Shift+T         このタブでの制限を無効にする
P               このページ上のすべてを「一時的な信頼済み」に設定
F               一時的な許可を解除

ユーザー作成のガイド

Chromiumにおける制限

Chromiumがブラウザ拡張機能に対して公開しているAPIは、Firefoxのそれほど強力でも柔軟でもない。Mozillaが「万能」なアドオンをWebExtensions技術(Chrome Extensions技術の「クローン」)に移行した際、彼らは私に、NoScriptのようなプライバシーおよびセキュリティ拡張機能をサポートするのに特に適した、webRequestやその他のAPIの改良版の設計と実装を依頼した。これにより、Manifest V2 ではすでに Firefox に大きな優位性がもたらされているが、その差は Manifest V3 ではさらに拡大する ことになり、特にプライバシーやセキュリティの革新に悪影響を及ぼす。したがって、NoScript はほとんどのブラウザと互換性があるとはいえ、その最先端機能の一部は Firefox および Tor Browser などの派生ブラウザでのみ利用可能である。具体的には、Google Chrome、Edge、Vivaldi などの Chromium ベースのブラウザによって NoScript に課されている現在の制限は以下の通りだ:

  • Injection CheckerのXSSフィルター(「クロスサイトでの不審なリクエストをサニタイズする」)は、非同期でブロックを行うwebRequest APIが存在しないため無効化されている
  • タブ間ID漏洩防止機能(TabGuard)は利用できない(上記と同じ理由)
  • LAN保護機能は数値のIPアドレスには有効だが、ドメイン名を解決できない(実用的なDNSとリクエスト傍受APIの組み合わせが存在しないため)

https://noscript.net/usage

タグ:
Table of Contents