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

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

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

สิทธิ์เป็นสตริงที่รู้จักซึ่งอ้างอิงถึง 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
}

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

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

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

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

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

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

ทริกเกอร์สิทธิ์ที่ไม่บังคับเมื่อมีเหตุการณ์

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

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

ส่วนขยายมีฟีเจอร์เพิ่มเติมซึ่งแสดงเว็บไซต์ยอดนิยมของผู้ใช้ ฟีเจอร์นี้ต้องใช้สิทธิ์ 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 ตรวจสอบว่าเปิดใช้โหมดนักพัฒนาซอฟต์แวร์แล้ว และคลิกส่วนขยายแพ็ก

โหมดนักพัฒนาซอฟต์แวร์ถูกเลือกไว้ แล้วคลิกแพ็กส่วนขยาย

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

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

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" มอบสิทธิ์เข้าถึง Native Messaging API ให้กับส่วนขยาย สื่อสารกับแอปพลิเคชันที่มาพร้อมเครื่อง
"notifications" มอบสิทธิ์เข้าถึง chrome.notifications API ให้กับส่วนขยาย แสดงการแจ้งเตือน
"pageCapture" มอบสิทธิ์เข้าถึง API chrome.pageCapture ให้กับส่วนขยาย อ่านและเปลี่ยนแปลงข้อมูลทั้งหมดในเว็บไซต์ที่คุณเข้าชม
"privacy" ให้สิทธิ์เข้าถึง API chrome.privacy แก่ส่วนขยาย เปลี่ยนการตั้งค่าที่เกี่ยวข้องกับความเป็นส่วนตัว
"proxy" มอบสิทธิ์เข้าถึง chrome.proxy API แก่ส่วนขยาย อ่านและเปลี่ยนแปลงข้อมูลทั้งหมดในเว็บไซต์ที่คุณเข้าชม
"system.storage" มอบสิทธิ์เข้าถึง chrome.system.storage API ให้กับส่วนขยาย ระบุและยกเลิกการต่อเชื่อมอุปกรณ์เก็บข้อมูล
"tabCapture" มอบสิทธิ์เข้าถึง API chrome.tabCapture ให้กับส่วนขยาย อ่านและเปลี่ยนแปลงข้อมูลทั้งหมดในเว็บไซต์ที่คุณเข้าชม
"tabs" มอบสิทธิ์เข้าถึงช่องที่ได้รับสิทธิ์ของออบเจ็กต์ Tab ที่ API หลายรายการใช้อยู่ รวมถึง chrome.tabs และ chrome.windows ในหลายๆ กรณี ส่วนขยายไม่จำเป็นต้องประกาศสิทธิ์ "tabs" เพื่อใช้ประโยชน์จาก API เหล่านี้ อ่านประวัติการท่องเว็บ
"topSites" มอบสิทธิ์เข้าถึง chrome.topSites API ให้กับส่วนขยาย อ่านรายชื่อเว็บไซต์ที่คุณเข้าชมบ่อยที่สุด
"ttsEngine" มอบสิทธิ์เข้าถึง chrome.ttsEngine API ให้กับส่วนขยาย อ่านข้อความทั้งหมดที่พูดโดยใช้เสียงสังเคราะห์
"webNavigation" มอบสิทธิ์เข้าถึง chrome.webNavigation API ให้กับส่วนขยาย อ่านประวัติการท่องเว็บ

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

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

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

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

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

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

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

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