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

Khả năng truy cập vào các trang web và hầu hết các API Chrome của tiện ích được xác định bằng các quyền đã khai báo của tiện ích đó. Chỉ nên giới hạn các quyền ở những quyền cần thiết cho chức năng của ứng dụng. Việc giới hạn quyền sẽ thiết lập các 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ệ tiện ích và người dùng 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 các quyền

Quyền là những 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ữ. Những quyền này được liệt kê trong tệp kê khai và được chỉ định là quyền bắt buộc 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
}

Chỉ giới hạn các quyền cần thiết đối với 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 nên chứng minh trong tương lai bằng cách yêu cầu các quyền có thể cần thiết khi 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. Điều 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 một tiện ích, cũng như những tính năng họ 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, đồng thời nhiều quyền sẽ cho thấy cảnh báo khi cài đặt. Người dùng có nhiều khả năng tin tưởng một tiện ích có ít cảnh báo hoặc khi giải thích về 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 đó. Hãy cân nhắc việc biến các tính năng thành không bắt buộc nếu chúng yêu cầu quyền kèm theo cảnh báo.

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

Chức năng cốt lõi của tiện ích mẫu quyền không bắt buộc là 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ỉ yêu cầu quyền storage, không bao gồm cảnh báo.

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

Tiện ích này có tính năng bổ sung; 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 quyền topSites và có cảnh báo.

Cảnh báo về tiện ích cho API topSites

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

Thay thế quyền ActiveTab

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. Thuộc tính này thay thế nhu cầu sử dụng "<all_urls>" trong nhiều trường hợp và không hiển thị cảnh báo khi cài đặt.

Không có ActiveTab:

Giao diện người dùng quyền không có thẻ hoạt động

Với thẻ đang hoạt động:

Giao diện người dùng về quyền với thẻ đang hoạt động

Quyền activeTab cấp cho một tiện ích quyền truy cập tạm thời vào thẻ đ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 đợi người dùng gọi tiện ích trước khi có được quyền truy cập. Quyền truy cập đó sẽ chỉ có hiệu lực cho đến khi thẻ được điều hướng hoặc đóng.

Khi quyền activeTab được bật 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 API webRequest. Tiện ích này tạm thời nhận được quyền từ máy chủ lưu trữ đối với nguồn gốc khung chính của thẻ.

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

Cho phép truy cập

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

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

Một 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 các URL file:// bằng extension.isAllowedFileSchemeAccess() .

Tìm hiểu về quyền

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

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 hiệu quả hơn để tránh những cảnh báo đáng báo động.

Xem cảnh báo

Cảnh báo quyền sẽ không hiển thị nếu 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 một tiện ích, hãy chuyển đến chrome://extensions và đảm bảo rằng bạn đã bật chế độ nhà phát triển rồi nhấp vào MỞ RỘNG GÓI.

Chọn Chế độ nhà phát triển rồi chọn Nhấp vào Gói tiện ích

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 rồi nhấp vào nút Pack Extension (Tiện ích gói). Bỏ qua trường Khoá riêng tư cho gói lần đầu.

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, chứa khoá riêng tư của tiện ích.

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

Đừng làm mất khoá riêng tư! Giữ tệp .pem ở nơi an toàn và bí mật; bạn cần phải cập nhật đuôi tệp.

Cài đặt tệp .crx bằng cách thả tệp này vào trang Quản lý của Tiện ích 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 tiện ích hay không và hiển thị 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ể chứa sự khác biệt nhỏ so với những cảnh báo hiện tại. Ngoài ra, một số quyền có thể không hiển thị 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 các cảnh báo gần đây nhất hiển thị cho quyền truy cập tiện ích, hãy làm theo các bước trong phần Xem cảnh báo.

Quyền Nội dung 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ủ lưu trữ. Bạn có thể tránh khai báo quyền của máy chủ bằng cách 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 quyền truy cập tiện ích cho "https://HostName.com/". Bạn có thể tránh khai báo quyền của máy chủ bằng cách dù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 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 quyền truy cập của các trang web vào các tính năng như cookie, JavaScript, trình bổ trợ, vị trí địa lý, micrô, máy ảnh, v.v.
"debugger" Cấp cho tiện ích quyền truy cập vào API chrome.debugger.
  • Truy cập vào 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 quyền truy cập vào API chrome.declarativeNetRequest. Chặn nội dung trên trang
"desktopCapture" Cấp quyền truy cập cho tiện ích vào API chrome.desktopCapture. Chụp nội dung trên màn hình
"downloads" Cấp quyền truy cập cho tiện ích của bạn vào API chrome.downloads. Quản lý tài nguyên đã tải xuống
"geolocation" Cho phép tiện ích sử dụng API định vị địa lý HTML5 mà không cần nhắc người dùng cấp quyền. Phát hiện vị trí thực tế của bạn
"history" Cấp quyền truy cập vào API chrome.history cho tiện ích của bạn. Đọc và thay đổi nhật ký duyệt web
"management" Cấp quyền truy cập vào tiện ích vào API chrome.management. Quản lý ứng dụng, tiện ích và giao diệ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 quyền truy cập vào API chrome.notifications. Hiện thông báo
"pageCapture" Cấp quyền truy cập cho tiện ích 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 quyền truy cập tiện ích 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 quyền truy cập vào tiện ích 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 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 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 quyền truy cập vào tiện ích vào API chrome.topSites. Đọc danh sách các trang web bạn thường xuyên truy cập nhất
"ttsEngine" Cấp quyền truy cập vào tiện ích 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 quyền truy cập cho tiện ích vào API chrome.webNavigation. Đọc nhật ký duyệt web

Cập nhật quyền

Việc cập nhật tiện ích có các quyền bổ sung có thể tạm thời vô hiệu hóa 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 thủ công một tiện ích hiện bao gồm quyền thẻ, thì họ sẽ nhận được 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 sẽ bị tắt cho đến khi người dùng đồng ý với các quyền mới.

Đã tắt tiện ích

Đồ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 này theo cách không bắt buộc và thêm nội dung cập nhật quyền mới vào optional_permissions trong tệp kê khai.