Khai báo quyền và cảnh báo người dùng

Khả năng truy cập vào trang web và hầu hết các API Chrome của tiện ích được xác định theo thông tin đã khai báo quyền. Bạn chỉ nên cấp quyền truy cập cho những nội dung cần thiết cho chức năng của mô hình. Việc giới hạn quyền sẽ thiết lập khả năng của tiện ích và giảm khả năng xâm nhập vào dữ liệu nếu tiện ích bị kẻ tấn công xâm phạm. Bảo vệ các tiện ích và người dùng của các tiện ích đó bằng cách triển khai các quyền rõ ràng, tối thiểu và không bắt buộc.

Sắp xếp quyền

Quyền là các chuỗi đã biết tham chiếu đến một API Chrome hoặc mẫu so khớp cấp quyền truy cập vào một hoặc nhiều máy chủ lưu trữ. Các quyền này được liệt kê trong tệp kê khai và được chỉ định là quyền cần thiết hoặc quyền không bắt buộc.

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

Giới hạn chỉ các quyền bắt buộc ở những quyền cần thiết cho chức năng cốt lõi của tiện ích. Một tiện ích không được yêu cầu nhiều quyền hơn mức cần thiết hiện tại; không cung cấp bằng chứng cho tương lai yêu cầu các quyền có thể cần thiết với các bản cập nhật.

Những quyền cần thiết cho các tính năng không bắt buộc phải được đăng ký dưới dạng quyền không bắt buộc. Chiến dịch này cho phép người dùng quyết định mức độ truy cập mà họ sẵn sàng cung cấp tiện ích và tính năng nào mong muốn.

Xác định các quyền cần thiết

Một tiện ích đơn giản có thể cần yêu cầu nhiều quyền và hiển thị nhiều quyền cảnh báo khi cài đặt. Người dùng có nhiều khả năng sẽ tin tưởng những tiện ích có cảnh báo hạn chế hoặc khi các quyền được giải thích cho các quyền đó.

Cảnh báo về quyền của tiện ích khi cài đặt

Xác định chức năng cốt lõi của tiện ích và những quyền cần thiết cho tiện ích đó. Cân nhắc đặt các tính năng ở chế độ không bắt buộc nếu chúng đòi hỏi quyền kèm theo cảnh báo.

Kích hoạt quyền không bắt buộc thông qua sự kiện

Chức năng cốt lõi của tiện ích mẫu về quyền không bắt buộc sẽ ghi đè trang thẻ mới. Một tính năng đang hiển thị mục tiêu trong ngày của người dùng. Tính năng này chỉ cần bộ nhớ (không đi kèm cảnh báo).

Nút tiện ích bật các tính năng bổ sung

Tiện ích này có thêm một tính năng; hiển thị các trang web hàng đầu của người dùng. Tính năng này yêu cầu topSites và có cảnh báo.

Cảnh báo về tiện ích đối với topSites API

Phát triển các tính năng dựa vào các quyền kèm theo cảnh báo (không bắt buộc) và giới thiệu các quyền đó giới thiệu tiện ích một cách tự nhiên cho người dùng. Ngoài ra, đây là cho phép người dùng tuỳ chỉnh thêm trải nghiệm của mình bằng tiện ích và tạo cơ hội để giải thích các cảnh báo.

Thay thế quyền activityTab

Quyền activeTab cấp quyền truy cập tạm thời vào trang web mà người dùng đang truy cập và cho phép tiện ích để sử dụng quyền "tabs" trên thẻ hiện tại. Điều này thay thế nhu cầu phải "<all_urls>" trong nhiều trường hợp và không hiện cảnh báo khi cài đặt.

Nếu không có ActiveTab:

Giao diện người dùng quyền không có ActiveTab

Khi sử dụng ActiveTab:

Giao diện người dùng quản lý quyền với ActiveTab

Quyền activeTab cấp cho tiện ích quyền truy cập tạm thời vào thẻ hiện đang hoạt động khi người dùng gọi tiện ích. Nếu tiện ích đó bị xâm phạm, kẻ tấn công sẽ phải chờ cho người dùng gọi ra tiện ích trước khi có quyền truy cập và quyền truy cập đó sẽ chỉ kéo dài cho đến thẻ được điều hướng hoặc đóng.

Khi bật quyền activeTab cho một thẻ, tiện ích có thể:

  • Gọi tabs.executeScript hoặc tabs.insertCSS trên thẻ đó.
  • Lấy URL, tiêu đề và biểu tượng trang web cho thẻ đó thông qua API trả về đối tượng tabs.Tab.
  • Chặn các yêu cầu mạng trong thẻ đến nguồn gốc khung chính của thẻ bằng cách sử dụng webRequest API. Tiện ích này tạm thời nhận được quyền của máy chủ lưu trữ đối với nguồn gốc khung chính của thẻ.

Các cử chỉ sau đây của người dùng sẽ bật activeTab:

Cho phép truy cập

Nếu một tiện ích cần truy cập vào URL file:// hoặc hoạt động ở chế độ ẩn danh, thì người dùng sẽ phải cho phép truy cập vào các tính năng đó bên trong trang chi tiết của tiện ích tại chrome://extensions.

Cho phép URL của tệp và chế độ ẩn danh trên trang chi tiết về tiện ích

Tiện ích có thể phát hiện xem có được bật ở chế độ ẩn danh hay không bằng cách gọi extension.isAllowedIncognitoAccess() hoặc có thể chạy trên file:// URL với extension.isAllowedFileSchemeAccess() .

Tìm hiểu về quyền

Cảnh báo quyền tồn tại để mô tả những khả năng mà API cấp cho người dùng tiện ích, nhưng một số cảnh báo trong số này có thể không rõ ràng lúc đầu. Ví dụ: thêm "tabs" dẫn đến một cảnh báo có vẻ không liên quan: tiện ích có thể Đọc thông tin duyệt web của bạn hoạt động. Mặc dù có thể dùng API chrome.tabs để chỉ mở các thẻ mới, nhưng bạn cũng có thể dùng API này để xem URL được liên kết với mọi thẻ mới mở bằng cách sử dụng các đối tượng tabs.Tab của các thẻ đó.

Khi có thể, hãy triển khai các quyền không bắt buộc hoặc một API kém mạnh mẽ hơn để tránh báo động các cảnh báo.

Xem cảnh báo

Cảnh báo quyền sẽ không xuất hiện nếu một tiện ích được tải dưới dạng tệp đã giải nén. Để xem cảnh báo về quyền của tiện ích, hãy chuyển đến chrome://extensions, đảm bảo bạn đã bật chế độ nhà phát triển và nhấp vào Tiện ích mở rộng gói.

Chọn Chế độ nhà phát triển rồi chọn Tiện ích gói nhấp chuột

Chỉ định đường dẫn đến thư mục của tiện ích trong trường Thư mục gốc của tiện ích, sau đó nhấp vào Nút Pack Extension (Tiện ích gói). Bỏ qua trường Khoá riêng tư đối với gói cài đặt lần đầu tiên.

Chỉ định đường dẫn tiện ích rồi nhấp vào gói tiện ích

Chrome sẽ tạo hai tệp, một tệp .crx và một tệp .pem, trong đó có khoá riêng tư.

Tệp tiện ích được đóng gói

Đừng để mất khoá riêng tư! Lưu tệp .pem ở một nơi bí mật và an toàn; sẽ là bạn cần cập nhật tiện ích đó.

Cài đặt tệp .crx bằng cách thả tệp đó vào trang Quản lý của tiện ích của Chrome.

Thả tệp để cài đặt

Sau khi thả tệp .crx, trình duyệt sẽ hỏi xem có thể thêm và hiển thị tiện ích này hay không các cảnh báo.

Cảnh báo về tiện ích thẻ mới

Quyền có cảnh báo

Lưu ý: Bảng quyền được cập nhật trên cơ sở nỗ lực tối đa và có thể có sự khác biệt nhỏ những cảnh báo hiện tại. Ngoài ra, một số quyền có thể không hiện cảnh báo khi được ghép nối với các quyền khác. Ví dụ: cảnh báo "tabs" sẽ không xuất hiện nếu tiện ích cũng yêu cầu "<all_urls>". Để xác minh những cảnh báo gần đây nhất được hiển thị về quyền truy cập tiện ích, hãy làm theo các bước trong bài viết Xem cảnh báo.

Quyền Mô tả Nhắc nhở
  • "http://*/*"
  • "https://*/*"
  • "*://*/*"
  • "<all_urls>"
Cấp quyền truy cập tiện ích cho tất cả máy chủ. Bạn có thể tránh khai báo bất kỳ quyền nào của máy chủ bằng cách sử dụng quyền activeTab. Đọc và thay đổi tất cả dữ liệu trên các trang web bạn truy cập
"https://HostName.com/" Cấp cho tiện ích quyền truy cập vào "https://HostName.com/". Bạn có thể tránh khai báo bất kỳ quyền lưu trữ bằng quyền activeTab. Đọc và thay đổi dữ liệu của bạn trên HostName.com
"bookmarks" Cấp cho tiện ích của bạn quyền truy cập vào API chrome.bookmarks. Đọc và thay đổi dấu trang
"clipboardRead" Bắt buộc nếu tiện ích sử dụng document.execCommand('paste'). Đọc dữ liệu bạn sao chép và dán
"clipboardWrite" Cho biết tiện ích sử dụng document.execCommand('copy') hoặc document.execCommand('cut') Sửa đổi dữ liệu mà bạn sao chép và dán
"contentSettings" Cấp cho tiện ích của bạn quyền truy cập vào API chrome.contentSettings. Thay đổi các chế độ cài đặt kiểm soát trang web quyền truy cập vào các tính năng như cookie, JavaScript, trình bổ trợ định vị vị trí, micrô, máy ảnh, v.v.
"debugger" Cấp cho tiện ích của bạn quyền truy cập vào API chrome.debugger.
  • Truy cập phần phụ trợ trình gỡ lỗi trang
  • Đọc và thay đổi tất cả dữ liệu trên các trang web bạn truy cập
"declarativeNetRequest" Cấp cho tiện ích của bạn quyền truy cập vào API chrome.declarativeNetRequest. Chặn nội dung trên trang
"desktopCapture" Cấp cho tiện ích của bạn quyền truy cập vào API chrome.desktopCapture. Ghi lại nội dung trên màn hình
"downloads" Cấp cho tiện ích của bạn quyền truy cập vào API chrome.downloads. Quản lý nội dung tải xuống
"geolocation" Cho phép tiện ích sử dụng API định vị địa lý HTML5 mà không nhắc người dùng cấp quyền. Phát hiện vị trí thực của bạn
"history" Cấp cho tiện ích của bạn quyền truy cập vào API chrome.history. Đọc và thay đổi nhật ký duyệt web
"management" Cấp cho tiện ích quyền truy cập vào API chrome.management. Quản lý ứng dụng, tiện ích và giao diện của bạn
"nativeMessaging" Cấp cho tiện ích quyền truy cập vào API nhắn tin gốc. Kết nối với các ứng dụng gốc hợp tác
"notifications" Cấp cho tiện ích của bạn quyền truy cập vào API chrome.notifications. Hiện thông báo
"pageCapture" Cấp cho tiện ích quyền truy cập vào API chrome.pageCapture. Đọc và thay đổi tất cả dữ liệu trên các trang web bạn truy cập
"privacy" Cấp cho tiện ích quyền truy cập vào API chrome.privacy. Thay đổi các chế độ cài đặt liên quan đến quyền riêng tư
"proxy" Cấp cho tiện ích quyền truy cập vào API chrome.proxy. Đọc và thay đổi tất cả dữ liệu trên các trang web bạn truy cập
"system.storage" Cấp cho tiện ích quyền truy cập vào API chrome.system.storage. Xác định và ngắt kết nối thiết bị lưu trữ
"tabCapture" Cấp cho các tiện ích quyền truy cập vào API chrome.tabCapture. Đọc và thay đổi tất cả dữ liệu trên các trang web bạn truy cập
"tabs" Cấp cho tiện ích quyền truy cập vào các trường đặc quyền của đối tượng Tab mà một số API sử dụng bao gồm chrome.tabschrome.windows. Trong trong nhiều trường hợp, tiện ích sẽ không cần khai báo quyền "tabs" để sử dụng các API này. Đọc nhật ký duyệt web
"topSites" Cấp cho tiện ích quyền truy cập vào API chrome.topSites. Đọc danh sách các trang web bạn thường xuyên truy cập
"ttsEngine" Cấp cho tiện ích quyền truy cập vào API chrome.ttsEngine. Đọc tất cả văn bản được đọc bằng giọng nói tổng hợp
"webNavigation" Cấp cho tiện ích quyền truy cập vào API chrome.webNavigation. Đọc nhật ký duyệt web

Cập nhật quyền

Việc cập nhật một tiện ích có các quyền bổ sung có thể tạm thời vô hiệu hoá tiện ích đó. Người dùng sẽ phải bật lại sau khi đồng ý với bất kỳ cảnh báo mới nào.

Nếu người dùng cập nhật theo cách thủ công một tiện ích hiện đã có quyền thẻ, họ sẽ nhận được một cảnh báo trên trang quản lý.

Quyền thêm thẻ

Nếu được cập nhật tự động, tiện ích này sẽ bị vô hiệu hoá cho đến khi người dùng đồng ý với quyền truy cập.

Tiện ích đã bị tắt

Đồng ý cấp quyền

Bạn có thể tránh điều này bằng cách đặt tính năng mới ở chế độ không bắt buộc và thêm nội dung cập nhật mới về quyền cho optional_permissions trong tệp kê khai.