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

Người dùng sẽ không cài đặt mộ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à tiện ích đó có vẻ cần thiết. Yêu cầu cấp quyền phải hợp lý với người dùng và chỉ cung cấp 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 bất kỳ 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.

Bảo vệ và tôn trọng người dùng tiện ích bằng cách thêm 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 số lượng quyền cần thiết

Các API mà một tiện ích có thể truy cập được chỉ định trong trường permissions của tệp kê khai. Càng được cấp nhiều quyền, kẻ tấn công càng có nhiều cách can thiệp thông tin hơn. Chỉ nên liệt kê những API mà tiện ích phụ thuộc vào và nên cân nhắc các lựa 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 ít nhận được cảnh báo về quyền. Người dùng thường sẽ cài đặt một tiện ích có cảnh báo hạn chế.

Tiện ích không được "phù hợp cho tương lai" quyền truy cập vào dữ liệu người dùng bằng cách yêu cầu các quyền mà họ hiện không cần đến, nhưng có thể triển khai trong tương lai. Thêm các quyền mới bằng bản cập nhật tiện ích và cân nhắc việc đặt các quyền đó 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ẻ đ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 di chuyển khỏi hoặc đóng thẻ hiện tại. 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 sẽ không hiển thị thông báo cảnh báo trong quá trình cài đặt.

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

Cho phép người dùng chọn các tính năng và quyền mà họ cần trên tiện ích bằng cách thêm 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 chọn tính năng đó ở chế độ không bắt buộc và di 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 thêm các quyền không bắt buộc cho phép tiện ích giải thích lý do tiện ích cần 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 tùy chọn bật các tính năng AI mới.

Ảnh chụp màn hình 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 đây 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.

Ảnh chụp màn hình về 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. Làm như vậy sẽ khiến tính năng có sẵn cho người dùng mà không cần tắt tiện ích, như có thể xảy ra nếu việc cập nhật bằng tiện ích các quyền 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. Tiện ích yêu cầu người dùng càng ít thông tin thì mức độ hiển thị quảng cáo sẽ càng thấp hơn nếu tiện ích đó bị xâm phạm.

Bạn phải xử lý cẩn thận tất cả 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 trong máy khách của tiện ích vì bộ nhớ tiện ích không được mã hoá.

Tiết kiệm 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 storage hoặc bằng cách đưa ra các yêu cầu từ máy chủ dẫn đến việc tiết kiệm dữ liệu. Khi tiện ích cần lưu nội dung nào đó, trước tiên, hãy cân nhắc xem nội dung đó có phải từ cửa sổ ẩn danh. 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ổ này sẽ không để lại kênh nào. Khi xử lý dữ liệu từ cửa sổ ẩn danh, tiện ích phải thực hiện lời hứa này. Nếu một tiện ích thường lưu nội dung duyệt web lịch sử, không lưu lịch sử từ cửa sổ ẩn danh. Tuy nhiên, tiện ích có thể lưu trữ cài đặt từ bất kỳ cửa sổ nào, chế độ ẩn danh hay không.

Để biết một cửa sổ có ở chế độ ẩn danh hay không, hãy kiểm tra thuộc tính incognito của cửa sổ có liên quan tabs.Tab hoặc windows.Window.

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