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 nhiều quyền hơn mức cần thiết. Các yêu cầu về quyền phải hợp lý với người dùng và chỉ giới hạn ở những thông tin quan trọng cần thiết để triển khai tiện ích. Những tiện ích thu thập hoặc truyền bất kỳ dữ liệu người dùng nào đều phải tuân thủ các chính sách trong phần 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 á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 số lượng quyền bắt buộc
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. Bạn 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ỉ 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 nhập hơn. Tiện ích càng yêu cầu ít quyền, người dùng sẽ càng thấy ít cảnh báo về quyền. Người dùng có nhiều khả năng cài đặt một tiện ích có ít cảnh báo.
Tiện ích không nên "tính sẵn tương lai" cho 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à hiện tại tiện ích không cần, nhưng có thể triển khai trong tương lai. Thêm các quyền mới vào bản cập nhật tiện ích và cân nhắc việc đặt các quyền này là không bắt buộc.
activeTab
Các tiện ích sử dụng quyền truy cập vào máy chủ lưu trữ để chèn tập lệnh thường có thể thay thế activeTab. Quyền activeTab sẽ cấp cho 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 sẽ bị cắt khi người dùng rời khỏi hoặc đóng thẻ hiện tại. Đây là một lựa chọn 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á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 một tiện ích bằng cách thêm quyền không bắt buộc. Nếu một tính năng không thiết yếu đối với chức năng cốt lõi của tiện ích, hãy đặt tính năng đó là 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 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 có thể cung cấp cho người dùng lựa chọn bật các tính năng.

Khi nhấp vào Đồng ý!, sự kiện sau sẽ được kích hoạt 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ẽ nhận được lời nhắc yêu cầu sau.

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 đó, người dùng có thể sử dụng tính năng mới mà không cần tắt tiện ích, như có thể xảy ra nếu bạn cập nhật bằng các quyền bắt buộc mới.
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 càng yêu cầu ít thông tin từ người dùng thì càng ít bị lộ nếu tiện ích bị xâm nhập.
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ột máy chủ bảo mật có miền đã đăng ký. Luôn sử dụng HTTPS để kết nối và tránh lưu trữ dữ liệu người dùng nhạy cảm ở phía máy khách của một 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
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 máy chủ dẫn đến việc lưu dữ liệu. Khi tiện ích cần lưu một 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 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 đảm bảo rằng cửa sổ sẽ không để lại dấu vết. Khi xử lý dữ liệu từ các 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ác cửa sổ ẩn danh. Tuy nhiên, các tiện ích có thể lưu trữ các lựa chọn ưu tiên về chế độ cài đặt từ bất kỳ cửa sổ nào, dù là cửa sổ ẩn danh hay 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});
}
}