ประกาศสิทธิ์และเตือนผู้ใช้

ความสามารถของส่วนขยายในการเข้าถึงเว็บไซต์และ API ส่วนใหญ่ของ Chrome จะกำหนดโดย สิทธิ์ สิทธิ์ควรจำกัดไว้เฉพาะที่จำเป็นสำหรับฟังก์ชันการทำงานเท่านั้น การจำกัดสิทธิ์จะสร้างความสามารถของส่วนขยายและลดการเกิดข้อมูลที่อาจเกิดขึ้น ในกรณีที่ส่วนขยายถูกโจมตี ปกป้องส่วนขยายและผู้ใช้ด้วยการใช้งาน สิทธิ์ที่ชัดแจ้ง สิทธิ์ขั้นต่ำสุด และอนุญาตที่ไม่บังคับ

จัดระเบียบสิทธิ์

สิทธิ์คือสตริงที่รู้จักซึ่งอ้างอิงถึง Chrome API หรือรูปแบบการจับคู่ที่ให้สิทธิ์เข้าถึง โฮสต์อย่างน้อย 1 รายการ รายชื่อเหล่านี้แสดงอยู่ในไฟล์ Manifest และมีการระบุว่าเป็นสิทธิ์ที่จำเป็นหรือ สิทธิ์ที่ไม่บังคับ

{
  "name": "Permissions Extension",
  ...
  // required permissions
  "permissions": [
    "activeTab",
    "contextMenus",
    "storage"
  ],
  // optional permissions
  "optional_permissions": [
    "topSites",
    "http://www.developer.chrome.com/*"
  ],
      ...
  "manifest_version": 2
}

จำกัดสิทธิ์ที่จำเป็นให้มีเฉพาะสิ่งที่จำเป็นสำหรับฟังก์ชันหลักของส่วนขยายเท่านั้น CANNOT TRANSLATE ส่วนขยายไม่ควรขอสิทธิ์มากกว่าที่จำเป็นต้องใช้ในปัจจุบัน อย่าพิสูจน์ในอนาคตโดย ขอสิทธิ์ที่อาจจำเป็นต้องมีสำหรับการอัปเดต

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

ระบุสิทธิ์ที่จำเป็น

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

คำเตือนเกี่ยวกับสิทธิ์ของส่วนขยายเมื่อติดตั้ง

ระบุฟังก์ชันหลักของส่วนขยายและสิทธิ์ที่ต้องใช้สำหรับส่วนขยาย พิจารณา ทำให้ฟีเจอร์เป็นแบบไม่บังคับหากต้องใช้สิทธิ์ที่มีคำเตือน

เรียกใช้สิทธิ์เสริมกับเหตุการณ์

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

ปุ่มส่วนขยายที่ช่วยเปิดใช้ฟีเจอร์เพิ่มเติม

ส่วนขยายนี้มีฟีเจอร์เพิ่มเติม แสดงเว็บไซต์ยอดนิยมของผู้ใช้ ฟีเจอร์นี้ต้องใช้ topSites ซึ่งมีคำเตือน

คำเตือนส่วนขยายสำหรับ topSites API

การพัฒนาฟีเจอร์ที่ต้องอาศัยสิทธิ์ที่มีคำเตือนเป็นตัวเลือกที่ไม่บังคับและแนะนำฟีเจอร์เหล่านั้น ต่างๆ โดยอัตโนมัติช่วยให้ผู้ใช้เริ่มต้นใช้งานส่วนขยายได้โดยปราศจากความเสี่ยง นอกจากนี้ ช่วยให้ผู้ใช้ปรับแต่งการใช้งานเพิ่มเติมของตนด้วยส่วนขยาย และสร้างโอกาสในการ อธิบายคำเตือน

แทนที่สิทธิ์ activeTab

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

เมื่อไม่มี ActiveTab:

UI ของสิทธิ์ที่ไม่มีactiveTab

เมื่อใช้ ActiveTab:

UI ของสิทธิ์ที่มี activeTab

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

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

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

ท่าทางสัมผัสของผู้ใช้ต่อไปนี้เปิดใช้ activeTab:

การอนุญาตให้เข้าถึง

หากส่วนขยายจำเป็นต้องเข้าถึง URL ของ file:// หรือดำเนินการในโหมดไม่ระบุตัวตน ผู้ใช้จะต้องทำดังนี้ ให้เปิดใช้การเข้าถึงฟีเจอร์เหล่านั้นในหน้ารายละเอียดของส่วนขยายที่ chrome://extensions

อนุญาต URL ของไฟล์และโหมดไม่ระบุตัวตนในหน้ารายละเอียดส่วนขยาย

ส่วนขยายสามารถตรวจพบการเปิดใช้งานในโหมดไม่ระบุตัวตนด้วยการเรียก extension.isAllowedIncognitoAccess() หรือสามารถเรียกใช้บน file:// URL ด้วย extension.isAllowedFileSchemeAccess()

ทำความเข้าใจสิทธิ์

มีคำเตือนสิทธิ์เพื่ออธิบายความสามารถที่ API มอบให้ผู้ใช้ส่วนขยาย แต่ คำเตือนบางส่วนอาจสังเกตได้ไม่ชัดเจนในตอนแรก เช่น การเพิ่ม "tabs" ส่งผลให้มีคำเตือนว่าไม่เกี่ยวข้องกัน: ส่วนขยายสามารถ อ่านการท่องเว็บของคุณ กิจกรรม แม้ว่าอาจใช้ chrome.tabs API เพื่อเปิดแท็บใหม่เท่านั้น แต่ก็ใช้ได้เช่นกัน เพื่อดู URL ที่เชื่อมโยงกับแท็บที่เปิดใหม่ทุกแท็บโดยใช้ออบเจ็กต์ tabs.Tab

ใช้สิทธิ์ที่ไม่บังคับหรือ API ที่มีประสิทธิภาพน้อยลงเมื่อเป็นไปได้เพื่อหลีกเลี่ยงการปลุก

การดูคำเตือน

ระบบจะไม่แสดงคำเตือนสิทธิ์หากโหลดส่วนขยายเป็นไฟล์ที่คลายการแพคแล้ว หากต้องการดู คำเตือนสิทธิ์ของส่วนขยาย โปรดไปที่ chrome://extensions ตรวจสอบว่าเปิดใช้โหมดนักพัฒนาซอฟต์แวร์แล้ว และคลิกแพ็คส่วนขยาย

เลือกโหมดนักพัฒนาซอฟต์แวร์แล้ว จากนั้นคลิกส่วนขยายของ Click Pack

ระบุเส้นทางไปยังโฟลเดอร์ของส่วนขยายในฟิลด์ไดเรกทอรีรากของส่วนขยาย จากนั้นคลิก ปุ่มแพ็กส่วนขยาย ไม่ต้องสนใจช่องคีย์ส่วนตัวสำหรับแพ็กเกจครั้งแรก

ระบุเส้นทางส่วนขยาย แล้วคลิกแพ็กส่วนขยาย

Chrome จะสร้างไฟล์ 2 ไฟล์ ได้แก่ ไฟล์ .crx และไฟล์ .pem ซึ่งมี คีย์ส่วนตัว

ไฟล์ส่วนขยายที่เป็นแพ็กเกจ

อย่าทำคีย์ส่วนตัวหาย! เก็บไฟล์ .pem ไว้ในที่ลับและปลอดภัย จะเป็นเวลา ที่จำเป็นในการอัปเดตส่วนขยาย

ติดตั้งไฟล์ .crx โดยวางไว้ในหน้าการจัดการของส่วนขยาย Chrome

วางไฟล์เพื่อติดตั้ง

หลังจากวางไฟล์ .crx เบราว์เซอร์จะถามว่าจะเพิ่มและแสดงส่วนขยายได้หรือไม่

คำเตือนสำหรับส่วนขยายแท็บใหม่

สิทธิ์ที่มีคำเตือน

หมายเหตุ: ตารางสิทธิ์จะอัปเดตอย่างเต็มความสามารถและอาจมีความคลาดเคลื่อนเล็กน้อย ตามคำเตือนในปัจจุบัน นอกจากนี้ สิทธิ์บางรายการอาจไม่แสดงคำเตือนเมื่อจับคู่กับ สิทธิ์อื่นๆ เช่น คำเตือน "tabs" จะไม่แสดงหากส่วนขยาย คำขอ "<all_urls>" หากต้องการยืนยันคำเตือนที่แสดงล่าสุดสำหรับสิทธิ์ของส่วนขยาย ให้ทำตาม ขั้นตอนในการดูคำเตือน

สิทธิ์ คำอธิบาย คำเตือน
  • "http://*/*"
  • "https://*/*"
  • "*://*/*"
  • "<all_urls>"
ให้สิทธิ์เข้าถึงส่วนขยายแก่โฮสต์ทั้งหมด คุณอาจหลีกเลี่ยงการประกาศสิทธิ์ของโฮสต์โดยใช้ สิทธิ์ activeTab อ่านและเปลี่ยนแปลงข้อมูลทั้งหมดในเว็บไซต์ที่คุณเข้าชม
"https://HostName.com/" ให้สิทธิ์เข้าถึงส่วนขยายแก่ "https://HostName.com/" เป็นไปได้ที่จะหลีกเลี่ยงการประกาศ สิทธิ์โฮสต์โดยใช้สิทธิ์ activeTab อ่านและเปลี่ยนแปลงข้อมูลใน HostName.com
"bookmarks" ให้สิทธิ์เข้าถึง chrome.bookmarks API แก่ส่วนขยาย อ่านและเปลี่ยนแปลงบุ๊กมาร์ก
"clipboardRead" ต้องระบุหากส่วนขยายใช้ document.execCommand('paste') อ่านข้อมูลที่คุณคัดลอกและวาง
"clipboardWrite" ระบุว่าส่วนขยายใช้ document.execCommand('copy') หรือ document.execCommand('cut') แก้ไขข้อมูลที่คุณคัดลอกและวาง
"contentSettings" ให้สิทธิ์เข้าถึง chrome.contentSettings API แก่ส่วนขยาย เปลี่ยนการตั้งค่าที่ควบคุมเว็บไซต์ เข้าถึงฟีเจอร์ต่างๆ เช่น คุกกี้, JavaScript, ปลั๊กอิน ตำแหน่งทางภูมิศาสตร์ ไมโครโฟน กล้อง เป็นต้น
"debugger" ให้สิทธิ์เข้าถึง chrome.debugger API แก่ส่วนขยาย
  • เข้าถึงแบ็กเอนด์โปรแกรมแก้ไขข้อบกพร่องหน้าเว็บ
  • อ่านและเปลี่ยนแปลงข้อมูลทั้งหมดในเว็บไซต์ที่คุณเข้าชม
"declarativeNetRequest" ให้สิทธิ์เข้าถึง chrome.declarativeNetRequest API ให้กับส่วนขยาย บล็อกเนื้อหาของหน้าเว็บ
"desktopCapture" ให้สิทธิ์เข้าถึง chrome.desktopCapture API แก่ส่วนขยาย จับภาพเนื้อหาบนหน้าจอ
"downloads" ให้สิทธิ์เข้าถึง chrome.downloads API แก่ส่วนขยาย จัดการการดาวน์โหลด
"geolocation" อนุญาตให้ส่วนขยายใช้ API ตำแหน่งทางภูมิศาสตร์ของ HTML5 โดยไม่แจ้งให้ผู้ใช้อนุญาต ตรวจหาตำแหน่งทางกายภาพของคุณ
"history" ให้สิทธิ์เข้าถึง chrome.history API แก่ส่วนขยาย อ่านและเปลี่ยนแปลงประวัติการท่องเว็บ
"management" ให้สิทธิ์เข้าถึง chrome.management API ของส่วนขยาย จัดการแอป ส่วนขยาย และธีมของคุณ
"nativeMessaging" ให้สิทธิ์เข้าถึง เนทีฟ Messaging API กับส่วนขยาย สื่อสารกับแอปพลิเคชันที่มาพร้อมเครื่องที่ทำงานร่วมกัน
"notifications" ให้สิทธิ์เข้าถึง chrome.notifications API แก่ส่วนขยาย แสดงการแจ้งเตือน
"pageCapture" ให้สิทธิ์เข้าถึง chrome.pageCapture API แก่ส่วนขยาย อ่านและเปลี่ยนแปลงข้อมูลทั้งหมดในเว็บไซต์ที่คุณเข้าชม
"privacy" ให้สิทธิ์เข้าถึง chrome.privacy API แก่ส่วนขยาย เปลี่ยนการตั้งค่าที่เกี่ยวข้องกับความเป็นส่วนตัว
"proxy" ให้สิทธิ์เข้าถึง chrome.proxy API แก่ส่วนขยาย อ่านและเปลี่ยนแปลงข้อมูลทั้งหมดในเว็บไซต์ที่คุณเข้าชม
"system.storage" ให้สิทธิ์เข้าถึง chrome.system.storage API ของส่วนขยาย ระบุและยกเลิกการเชื่อมต่ออุปกรณ์จัดเก็บข้อมูล
"tabCapture" ให้สิทธิ์เข้าถึง chrome.tabCapture API แก่ส่วนขยาย อ่านและเปลี่ยนแปลงข้อมูลทั้งหมดในเว็บไซต์ที่คุณเข้าชม
"tabs" ให้สิทธิ์เข้าถึงส่วนขยายแก่ช่องที่มีสิทธิ์ของออบเจ็กต์ Tab ที่ API หลายรายการใช้ รวมถึง chrome.tabs และ chrome.windows ใน ในหลายกรณี ส่วนขยายไม่จำเป็นต้องประกาศสิทธิ์ "tabs" เพื่อใช้ประโยชน์จาก API เหล่านี้ อ่านประวัติการท่องเว็บ
"topSites" ให้สิทธิ์เข้าถึง chrome.topSites API แก่ส่วนขยาย อ่านรายการเว็บไซต์ที่คุณเข้าชมบ่อยที่สุด
"ttsEngine" ให้สิทธิ์เข้าถึง chrome.ttsEngine API แก่ส่วนขยาย อ่านข้อความทั้งหมดที่พูดโดยใช้เสียงสังเคราะห์
"webNavigation" ให้สิทธิ์การเข้าถึงส่วนขยายแก่ chrome.webNavigation API อ่านประวัติการท่องเว็บ

อัปเดตสิทธิ์

การอัปเดตส่วนขยายที่มีสิทธิ์เพิ่มเติมอาจปิดใช้ส่วนขยายนั้นชั่วคราว ผู้ใช้จะต้องทำดังนี้ เปิดใช้อีกครั้งหลังจากยอมรับคำเตือนใหม่

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

การเพิ่มสิทธิ์แท็บ

หากส่วนขยายได้รับการอัปเดตโดยอัตโนมัติ ระบบจะปิดใช้ส่วนขยายจนกว่าผู้ใช้จะยอมรับ สิทธิ์

ส่วนขยายถูกปิดใช้งาน

ยอมรับสิทธิ์

คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดยกำหนดให้ฟีเจอร์ใหม่เป็นแบบไม่บังคับ และเพิ่มการอัปเดตสิทธิ์ใหม่ optional_permissions ในไฟล์ Manifest