Bảo vệ quyền riêng tư của người dùng

Người dùng sẽ không cài đặt tiện ích nếu tiện ích xâm phạm quyền riêng tư của họ hoặc yêu cầu cấp thêm quyền mà có vẻ như tiện ích đó cần. Các yêu cầu cấp quyền phải hợp lý với người dùng và chỉ được cung cấp những thông tin thiết yếu cần thiết để triển khai tiện ích. Các tiện ích thu thập hoặc truyền dữ liệu người dùng phải tuân thủ các chính sách trong mục Bảo vệ quyền riêng tư của người dùng.

Hãy bảo vệ và tôn trọng người dùng tiện ích bằng cách áp dụng các biện pháp phòng ngừa này để giữ an toàn cho danh tính của họ.

Giảm các quyền cần thiết

Các API mà tiện ích có thể truy cập được chỉ định trong trường permissions của tệp kê khai. Càng cấp nhiều quyền thì kẻ tấn công càng có nhiều cách để chặn thông tin. Bạn chỉ được liệt kê những API mà tiện ích phụ thuộc vào và nên cân nhắc các tuỳ chọn ít xâm phạm hơn. Tiện ích yêu cầu càng ít quyền thì người dùng càng thấy ít cảnh báo về quyền. Người dùng có nhiều khả năng sẽ cài đặt tiện ích có cảnh báo hạn chế.

Các tiện ích không được truy cập vào dữ liệu người dùng "trong tương lai" bằng cách yêu cầu các quyền mà tiện ích hiện không cần nhưng có thể triển khai trong tương lai. Bao gồm các quyền mới cùng với bản cập nhật tiện ích và cân nhắc việc bật các quyền đó thành không bắt buộc.

activeTab

Các tiện ích sử dụng quyền của máy chủ để chèn tập lệnh thường có thể thay thế activeTab. Quyền activeTab sẽ cấp cho một tiện ích quyền truy cập tạm thời vào thẻ hiện đang hoạt động, chỉ khi người dùng gọi tiện ích. Quyền truy cập bị cắt khi người dùng rời khỏi hoặc đóng thẻ hiện tại. Đây là giải pháp thay thế cho nhiều trường hợp sử dụng <all_urls>.

{
  "name": "Very Secure Extension",
  "version": "1.0",
  "description": "Example of a Secure Extension",
  "permissions": ["activeTab"],
  "manifest_version": 3
}

Quyền ActiveTab không hiển thị thông báo cảnh báo trong quá trình cài đặt.

Chọn cấp các quyền không bắt buộc

Cho phép người dùng chọn những tính năng và quyền họ cần trong tiện ích bằng cách cung cấp các quyền không bắt buộc. Nếu một tính năng không cần thiết đối với chức năng cốt lõi của tiện ích, hãy đặt tính năng đó ở chế độ không bắt buộc rồi chuyển API hoặc miền vào trường optional_permissions.

{
  "name": "Very Secure Extension",
  ...
  "optional_permissions": [ "tabs", ],
  "optional_host_permissions": ["https://www.google.com/" ],
  ...
}

Việc cung cấp các quyền không bắt buộc cho phép tiện ích giải thích lý do cần có một quyền cụ thể khi người dùng bật tính năng có liên quan. Tiện ích này có thể cung cấp cho người dùng lựa chọn bật các tính năng.

Ảnh chụp màn hình một cửa sổ bật lên yêu cầu cấp quyền

Nhấp vào OK! sẽ kích hoạt sự kiện sau trong trình chạy dịch vụ.

chrome.action.onClicked.addListener((event) => {
  // Permissions must be requested from inside a user gesture, like a button's
  // click handler.
  chrome.permissions.request(
    {
      permissions: ["tabs", "scripting"],
      origins: ['https://www.google.com/']
    },
    function (granted) {
      // The callback argument will be true if the user granted the permissions.
      if (granted) {
        // doSomething();
      } else {
        // doSomethingElse();
      }
    }
  );
});

Sau đó, người dùng sẽ thấy yêu cầu sau đây.

Ảnh chụp màn hình yêu cầu cấp quyền không bắt buộc.

Bạn cũng có thể triển khai các quyền không bắt buộc trong bản cập nhật tiện ích. Khi làm như vậy, người dùng sẽ có thể sử dụng tính năng mới mà không cần tắt tiện ích, điều này có thể xảy ra nếu bạn cập nhật bằng các quyền mới cần thiết.

Giới hạn và bảo mật thông tin người dùng

Chỉ yêu cầu lượng dữ liệu tối thiểu mà tiện ích cần. Càng ít thông tin mà một tiện ích yêu cầu từ người dùng thì càng ít bị lộ thông tin nếu tiện ích đó bị xâm phạm.

Bạn phải xử lý cẩn thận mọi dữ liệu người dùng được yêu cầu. Lưu trữ và truy xuất dữ liệu trong máy chủ bảo mật bằng miền đã đăng ký. Luôn sử dụng HTTPS để kết nối và tránh lưu giữ dữ liệu nhạy cảm của người dùng ở phía máy khách của tiện ích vì bộ nhớ tiện ích không được mã hoá.

Lưu dữ liệu và chế độ ẩn danh

Các tiện ích có thể lưu dữ liệu bằng cách sử dụng API bộ nhớ hoặc bằng cách đưa ra các yêu cầu tới máy chủ để lưu dữ liệu. Khi tiện ích cần lưu nội dung nào đó, trước tiên, hãy xem xét xem tiện ích đó có nằm trong cửa sổ ẩn danh hay không. Theo mặc định, các tiện ích không chạy trong cửa sổ ẩn danh.

Chế độ ẩn danh hứa hẹn rằng cửa sổ sẽ không để lại dấu vết nào. Khi xử lý dữ liệu từ cửa sổ ẩn danh, các tiện ích phải tuân thủ lời hứa này. Nếu một tiện ích thường lưu nhật ký duyệt web, thì đừng lưu nhật ký từ cửa sổ ẩn danh. Tuy nhiên, tiện ích có thể lưu trữ các lựa chọn cài đặt ưu tiên từ bất kỳ cửa sổ nào, ẩn danh hoặc không.

Để phát hiện xem một cửa sổ có đang ở chế độ ẩn danh hay không, hãy kiểm tra thuộc tính incognito của đối tượng tabs.Tab hoặc windows.Window có liên quan.

function saveTabData(tab) {
  if (tab.incognito) {
    return;
  } else {
    chrome.storage.local.set({data: tab.url});
  }
}