ความสามารถในการเข้าถึงเว็บไซต์ของส่วนขยายและ 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 ซึ่งมีคำเตือน
การพัฒนาฟีเจอร์ที่ต้องใช้สิทธิ์ที่มีคำเตือนเป็นตัวเลือกที่ไม่บังคับ และการแนะนำฟีเจอร์เหล่านั้นช่วยให้ผู้ใช้รู้จักส่วนขยายได้อย่างอิสระ นอกจากนี้ ยังช่วยให้ผู้ใช้ปรับแต่งการใช้งานส่วนขยายได้มากยิ่งขึ้นและสร้างโอกาสในการอธิบายคำเตือน
แทนที่สิทธิ์ ActiveTab
สิทธิ์ activeTab
จะให้สิทธิ์เข้าถึงเว็บไซต์ชั่วคราวแก่ผู้ใช้ และอนุญาตให้ส่วนขยายใช้สิทธิ์ "tabs"
ในแท็บปัจจุบันได้ ซึ่งจะมาแทนที่ "<all_urls>"
ในหลายกรณี และไม่มีคำเตือนในการติดตั้ง
หากไม่ได้ใช้ ActiveTab ให้ทำดังนี้
สำหรับ ActiveTab
สิทธิ์ activeTab
จะให้สิทธิ์ส่วนขยายเข้าถึงแท็บที่ใช้งานอยู่ในปัจจุบันได้ชั่วคราวเมื่อผู้ใช้เรียกใช้ส่วนขยาย หากส่วนขยายถูกบุกรุก ผู้โจมตีจะต้องรอให้ผู้ใช้เรียกใช้ส่วนขยายก่อนที่จะได้รับสิทธิ์เข้าถึง และสิทธิ์การเข้าถึงนั้นจะยังคงอยู่จนกว่าจะมีการไปยังส่วนต่างๆ หรือปิดแท็บเท่านั้น
เมื่อเปิดใช้สิทธิ์ activeTab
ของแท็บ ส่วนขยายจะทำสิ่งต่อไปนี้ได้
- โทรหา
tabs.executeScript
หรือtabs.insertCSS
ในแท็บนั้น - รับ URL, ชื่อ และไอคอน Fav ของแท็บนั้นผ่าน API ที่แสดงผลออบเจ็กต์
tabs.Tab
- สกัดกั้นคำขอของเครือข่ายในแท็บไปยังต้นทางเฟรมหลักของแท็บโดยใช้ webRequest API ส่วนขยายจะได้รับสิทธิ์ของโฮสต์ชั่วคราวสําหรับต้นทางเฟรมหลักของแท็บ
ท่าทางสัมผัสของผู้ใช้ต่อไปนี้เปิดใช้ activeTab
:
- การใช้การทำงานของเบราว์เซอร์
- การใช้การทำงานของหน้าเว็บ
- การดำเนินการรายการเมนูตามบริบท
- การใช้แป้นพิมพ์ลัดจาก commands API
- การยอมรับคำแนะนำจาก แถบอเนกประสงค์ API
การอนุญาตให้เข้าถึง
หากส่วนขยายจำเป็นต้องเข้าถึง URL file://
รายการหรือทำงานในโหมดไม่ระบุตัวตน ผู้ใช้จะต้อง
เปิดใช้ฟีเจอร์ดังกล่าวในหน้ารายละเอียดของส่วนขยายที่ chrome://extensions
ส่วนขยายจะตรวจสอบได้ว่ามีการเปิดใช้ในโหมดไม่ระบุตัวตนหรือไม่โดยเรียกใช้ 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>"
ด้วย หากต้องการยืนยันคำเตือนล่าสุดที่แสดงสำหรับสิทธิ์ของส่วนขยาย ให้ทำตามขั้นตอนในการดูคำเตือน
สิทธิ์ | คำอธิบาย | คำเตือน |
---|---|---|
|
มอบสิทธิ์เข้าถึงแก่โฮสต์ทั้งหมด คุณอาจหลีกเลี่ยงการประกาศสิทธิ์ของโฮสต์โดยใช้สิทธิ์ 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