ActiveTab 권한

activeTab 권한은 사용자가 확장 프로그램을 호출할 때(예: 브라우저 작업 클릭) 확장 프로그램이 현재 활성 탭에 일시적으로 액세스할 수 있도록 합니다. 탭 액세스는 사용자가 페이지에 있는 동안 지속되고 사용자가 다른 페이지로 이동하거나 탭을 닫으면 취소됩니다.

이는 <all_urls>를 많이 사용하는 대신 사용할 수 있지만 설치 중에 경고 메시지 없음을 표시합니다.

참고: M72부터는 사용자가 다른 출처로 이동할 때까지 activeTab 권한이 부여됩니다. 즉, 사용자가 https://example.com에서 확장 프로그램을 호출한 후 https://example.com/foo로 이동하면 확장 프로그램에서 페이지에 계속 액세스할 수 있습니다. 사용자가 https://chromium.org로 이동하면 액세스가 취소됩니다.

activeTab가 없는 경우:

활성 탭 사용 안함

activeTab를 사용합니다.

활성 탭 사용

Page Redder 샘플 확장 프로그램을 참고하세요.

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "browser_action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 2
}
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
  // No tabs or host permissions needed!
  console.log('Turning ' + tab.url + ' red!');
  chrome.tabs.executeScript({
    code: 'document.body.style.backgroundColor="red"'
  });
});

동기

브라우저 작업컨텍스트 메뉴 항목이 있는 웹 클리핑 확장 프로그램을 생각해 보세요. 이 확장 프로그램은 브라우저 작업을 클릭하거나 컨텍스트 메뉴 항목이 실행될 때만 실제로 탭에 액세스해야 할 수 있습니다.

activeTab가 없으면 확장 프로그램에서 모든 웹사이트에 대한 영구적인 전체 액세스 권한을 요청해야 합니다. 그래야만 사용자가 확장 프로그램을 호출할 경우 확장 프로그램이 제대로 작동합니다. 이처럼 간단한 확장 프로그램을 믿고 맡길 수 있습니다. 또한 확장 프로그램이 손상된 경우 공격자는 확장 프로그램의 모든 항목에 액세스할 수 있습니다.

반면에 activeTab 권한이 있는 확장 프로그램은 명시적인 사용자 동작에 대한 응답으로 탭 액세스 권한만 얻습니다. 확장 프로그램이 손상된 경우 공격자는 사용자가 확장 프로그램을 호출할 때까지 기다린 후에 액세스 권한을 얻어야 합니다. 이 액세스 권한은 탭을 탐색하거나 닫을 때까지만 유지됩니다

ActiveTab에서 허용되는 항목

탭에 activeTab 권한이 사용 설정되어 있으면 확장 프로그램에서 다음 작업을 할 수 있습니다.

  • 해당 탭에서 tabs.executeScript 또는 tabs.insertCSS를 호출합니다.
  • tabs.Tab 객체를 반환하는 API를 통해 이 탭의 URL, 제목, 파비콘을 가져옵니다. 기본적으로 activeTabtabs 권한을 일시적으로 부여합니다.
  • webRequest API를 사용하여 탭에서 탭의 기본 프레임 원본에 대한 네트워크 요청을 가로챕니다. 확장 프로그램이 일시적으로 탭의 기본 프레임 원본에 대한 호스트 권한을 가져옵니다.

activeTab 호출

다음 사용자 동작은 activeTab를 사용 설정합니다.