สิทธิ์ "activeTab"

"activeTab" สิทธิ์นี้จะให้สิทธิ์เข้าถึงแท็บที่ใช้งานอยู่ในปัจจุบันแก่ส่วนขยายชั่วคราวเมื่อผู้ใช้เรียกใช้ส่วนขยาย เช่น โดยการคลิกการดำเนินการของส่วนขยาย สิทธิ์เข้าถึงแท็บ จะคงอยู่ตราบใดที่ผู้ใช้อยู่ในหน้านั้น และจะถูกเพิกถอนเมื่อผู้ใช้ออกจากหน้าเว็บหรือปิดแท็บ เช่น หากผู้ใช้เรียกใช้ส่วนขยายใน https://example.com แล้วไปยัง https://example.com/foo ส่วนขยายจะยังคงมีสิทธิ์เข้าถึงหน้าเว็บต่อไป หาก ผู้ใช้ไปที่ https://chromium.org ระบบจะเพิกถอนสิทธิ์เข้าถึง

ซึ่งเป็นทางเลือกแทนการใช้ "<all_urls>" ในหลายๆ กรณี แต่ไม่มีข้อความเตือน แสดงในระหว่างการติดตั้ง

ไม่มี"activeTab"

ไม่มี activeTab

ด้วย "activeTab"

ด้วย activeTab

ระบบจะไม่ให้สิทธิ์เข้าถึงหน้าเว็บที่ถูกจำกัด เช่น หน้าเว็บ chrome://

ตัวอย่าง

ดูส่วนขยายตัวอย่าง Page Redder

manifest.json:

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab",
    "scripting"
  ],
  "background": {
    "service_worker": "service-worker.js"
  },
  "action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 3
}

service-worker:

function reddenPage() {
  document.body.style.backgroundColor = 'red';
}

chrome.action.onClicked.addListener((tab) => {
  // If the tab URL is not set, it is a restricted page.
  if (tab.url) {
    chrome.scripting.executeScript({
      target: { tabId: tab.id },
      func: reddenPage
    });
  }
});

แรงจูงใจ

ลองใช้ส่วนขยายการตัดเว็บที่มีการดำเนินการและรายการเมนูตามบริบท ส่วนขยายนี้อาจต้องเข้าถึงแท็บเมื่อมีการคลิกการดำเนินการของส่วนขยาย หรือเมื่อมีการเรียกใช้รายการในเมนูบริบทของส่วนขยายเท่านั้น

หากไม่มี "activeTab" ส่วนขยายนี้จะต้องขอสิทธิ์เข้าถึงแบบเต็มและแบบถาวรในทุกเว็บไซต์ เพียงเพื่อให้ทำงานได้หากผู้ใช้เรียกใช้ การมอบสิทธิ์มากมายเช่นนี้ให้กับส่วนขยายที่เรียบง่ายเช่นนี้ และหากส่วนขยายถูกบุกรุก ผู้โจมตีจะ เข้าถึงทุกอย่างที่ส่วนขยายมี

ในทางตรงกันข้าม ส่วนขยายที่มี"activeTab"สิทธิ์จะได้รับสิทธิ์เข้าถึงแท็บก็ต่อเมื่อผู้ใช้แสดงท่าทางผู้ใช้ที่ชัดเจนเท่านั้น หากส่วนขยายถูกบุกรุก ผู้โจมตีจะต้องรอให้ผู้ใช้เรียกใช้ส่วนขยายก่อนจึงจะได้รับสิทธิ์เข้าถึง และสิทธิ์เข้าถึงนั้นจะมีผลจนกว่าจะมีการไปยังแท็บอื่นหรือปิดแท็บ

สิ่งที่ "activeTab" ทำได้

ขณะที่เปิดใช้สิทธิ์ "activeTab" สำหรับแท็บ ส่วนขยายจะทำสิ่งต่อไปนี้ได้

  • โทรหา scripting.insertCSS() หรือ scripting.executeScript() ในแท็บนั้นหากมีการประกาศ"scripting" สิทธิ์ด้วย (ดังตัวอย่างด้านบน)
  • รับ URL, ชื่อ และ favicon สำหรับแท็บนั้นผ่าน API ที่แสดงออบเจ็กต์ tabs.Tab (โดยพื้นฐานแล้ว "activeTab" จะให้สิทธิ์เข้าถึงโฮสต์ชั่วคราว)
  • สกัดกั้นคำขอเครือข่ายในแท็บไปยังต้นทางของเฟรมหลักของแท็บโดยใช้ webRequest API ส่วนขยายจะได้รับสิทธิ์ของโฮสต์สำหรับต้นทางของเฟรมหลักของแท็บชั่วคราว

การเรียกใช้ activeTab

ท่าทางสัมผัสของผู้ใช้ต่อไปนี้จะเปิดใช้สิทธิ์ "activeTab"