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