Browser Extensions Development (Chrome & Edge) · レッスン

高度な権限を理解する

`activeTab`、`scripting`、ホスト権限などの機密性の高い権限について学び、いつ、どのように要求すべきかを理解します。

レッスン 1/411 ステップ

「高度な権限を理解する」はCoddyKit上の無料Browser Extensions Development (Chrome & Edge)レッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはBrowser Extensions Development (Chrome & Edge)学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Browser Extensions Development (Chrome & Edge)コースには全4レッスンが含まれています。

このレッスンの一部はまだ翻訳されておらず、英語で表示されています。

Beyond Basic Permissions

Welcome! In this lesson, we'll dive into advanced browser extension permissions. These permissions grant powerful capabilities, allowing your extension to interact more deeply with web content and user data.

Understanding them is crucial for building robust extensions while maintaining user trust and security.

We'll cover:

  • Host Permissions
  • activeTab Permission
  • scripting Permission

Granting Web Access

Host permissions are fundamental. They define which websites your extension can interact with. This includes reading data, modifying content, or making network requests on those specific sites.

Think of them as "keys" that unlock access to certain web domains.

Manifesting Host Access

You declare host permissions in your manifest.json file under the host_permissions key. Each string is a URL pattern.

For instance, to allow access to all pages on google.com, you'd specify:

{
  "name": "My Extension",
  "version": "1.0",
  "manifest_version": 3,
  "host_permissions": [
    "https://www.google.com/*"
  ]
}

Broad Access with Wildcards

You can use wildcards (*) for broader access. For example, "<all_urls>" (or "*://*/*") grants access to all URLs, on all schemes (HTTP, HTTPS).

While powerful, using broad wildcards should be done with extreme caution, as it grants your extension significant control over the user's browsing experience on any site.

{
  "name": "My Extension",
  "version": "1.0",
  "manifest_version": 3,
  "host_permissions": [
    "<all_urls>"
  ]
}

Temporary Tab Privileges

The activeTab permission is a safer alternative to broad host permissions for one-off actions on the current page.

When the user invokes your extension (e.g., clicks its icon), activeTab grants your extension temporary host permissions to the currently active tab. These permissions last until the user navigates away or closes the tab.

{
  "name": "My Extension",
  "version": "1.0",
  "manifest_version": 3,
  "permissions": [
    "activeTab"
  ]
}

Getting Current Tab URL

With activeTab, your extension can access information about the current tab, like its URL or title, without needing permanent host permissions.

Try running this example. Imagine this code is in your extension's popup script:

// This script runs when the extension popup opens.
document.addEventListener('DOMContentLoaded', function() {
  chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) {
    if (tabs.length > 0) {
      const activeTab = tabs[0];
      console.log('Active tab URL:', activeTab.url);
      // Display in popup for demonstration
      document.body.innerHTML = `<p>Current URL: ${activeTab.url}</p>`;
    } else {
      document.body.innerHTML = `<p>No active tab.</p>`;
    }
  });
});

Programmatic Code Injection

The scripting permission allows your extension to programmatically inject JavaScript and CSS into web pages. This is how you modify a page's content or behavior.

It's an essential permission for content scripts, replacing the Manifest V2 tabs.executeScript API.

{
  "name": "My Extension",
  "version": "1.0",
  "manifest_version": 3,
  "permissions": [
    "scripting"
  ],
  "host_permissions": [
    "https://www.example.com/*"
  ]
}

Modifying a Page

Once you have scripting permission (and host permission for the target tab), you can inject code. This example injects a simple script to change the background color of the active tab.

Imagine this running in your background script or popup:

// This code would typically run from a background script
// or popup after a user action.
chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) {
  if (tabs.length > 0) {
    const activeTabId = tabs[0].id;
    chrome.scripting.executeScript({
      target: { tabId: activeTabId },
      function: () => {
        // This function runs in the context of the web page
        document.body.style.backgroundColor = 'lightblue';
        console.log('CoddyKit: Page background changed!');
      }
    });
  }
});

Least Privilege Principle

Always follow the Principle of Least Privilege: request only the permissions your extension absolutely needs.

  • Required Permissions: Declared in manifest.json and requested at install.
  • Optional Permissions: Can be requested at runtime using chrome.permissions.request() only when the user needs that specific feature. This gives users more control and builds trust.

Permission Scenarios

Which permission(s) would you need for an extension that, when its icon is clicked, reads the current page's title and then injects a custom CSS file into that same page?

Advanced Permissions Summary

Great job! You've learned about powerful advanced permissions:

  • Host Permissions: Grant access to specific websites.
  • activeTab: Provides temporary host permissions to the active tab upon user invocation, ideal for one-off actions.
  • scripting: Enables programmatic injection of JavaScript and CSS.

Always use the least privileged approach to ensure security and user trust. Next, we'll explore secure coding practices!

無料で開始

AI チューターと学ぶ JavaScript — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
12
レッスン
48

よくある質問

「高度な権限を理解する」レッスンは無料ですか?

はい。「高度な権限を理解する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Browser Extensions Development (Chrome & Edge)コースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Browser Extensions Development (Chrome & Edge)コースには全4レッスンが含まれています。

「高度な権限を理解する」で何を学びますか?

`activeTab`、`scripting`、ホスト権限などの機密性の高い権限について学び、いつ、どのように要求すべきかを理解します。 ブラウザで直接実行するハンズオンコードでBrowser Extensions Development (Chrome & Edge)を演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Browser Extensions Development (Chrome & Edge)を始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのBrowser Extensions Development (Chrome & Edge)は初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「高度な権限を理解する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このBrowser Extensions Development (Chrome & Edge)レッスンでコードを書いて実行できますか?

はい。すべてのBrowser Extensions Development (Chrome & Edge)レッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 高度な権限を理解する
  2. 安全なコーディングの実践
  3. Content Security Policy(CSP)
  4. オプション権限と実行時リクエスト
← Browser Extensions Development (Chrome & Edge)に戻る