Пользователи не будут устанавливать расширение, если оно ставит под угрозу их конфиденциальность или запрашивает больше разрешений, чем кажется необходимым. Запросы на предоставление разрешений должны быть понятны пользователям и ограничиваться критически важной информацией, необходимой для работы расширения. Расширения, которые собирают или передают какие-либо данные пользователей, должны соответствовать правилам, изложенным в разделе «Защита конфиденциальности пользователей» .
Проявляйте уважение к пользователям расширений, приняв следующие меры предосторожности для защиты их личных данных.
Уменьшите количество необходимых разрешений.
API-интерфейсы, к которым может получить доступ расширение, указываются в поле permissions манифеста . Чем больше предоставленных разрешений, тем больше возможностей у злоумышленника для перехвата информации. Следует указывать только те API-интерфейсы, от которых зависит расширение, и рассмотреть менее инвазивные варианты. Чем меньше разрешений запрашивает расширение, тем меньше предупреждений о разрешениях будет показано пользователю. Пользователи с большей вероятностью установят расширение с минимальным количеством предупреждений.
Расширения не должны «обеспечивать защиту от устаревания» доступа к пользовательским данным путем запроса разрешений, которые в настоящее время им не нужны, но могут быть реализованы в будущем. Новые разрешения следует включать в обновления расширений и рассмотреть возможность сделать их необязательными .
активная вкладка
Расширения, использующие права доступа хоста для внедрения скриптов, часто могут заменить ключевое слово activeTab . Право activeTab предоставляет расширению временный доступ к текущей активной вкладке только тогда, когда пользователь запускает расширение. Доступ прекращается, когда пользователь переходит на другую вкладку или закрывает её. Оно служит альтернативой для многих случаев использования <all_urls> .
{
"name": "Very Secure Extension",
"version": "1.0",
"description": "Example of a Secure Extension",
"permissions": ["activeTab"],
"manifest_version": 3
}
При установке разрешения activeTab никаких предупреждающих сообщений не отображается.
Выберите дополнительные разрешения
Предоставьте пользователям возможность выбирать, какие функции и разрешения им необходимы от расширения, добавив необязательные разрешения . Если функция не является существенной для основной функциональности расширения, сделайте ее необязательной и переместите API или домен в поле optional_permissions .
{
"name": "Very Secure Extension",
...
"optional_permissions": [ "tabs", ],
"optional_host_permissions": ["https://www.google.com/" ],
...
}
Включение необязательных разрешений позволяет расширению объяснить, почему ему требуется то или иное разрешение, когда пользователь включает соответствующую функцию. Расширение может предложить пользователю возможность включения функций.

Нажатие кнопки «ОК!» вызовет следующее событие в сервис-воркере.
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();
}
}
);
});
После этого пользователю будет предложено выполнить следующий запрос.

Дополнительные разрешения также можно добавить при обновлении расширения. Это позволит пользователям получить доступ к новой функции без отключения расширения, что может произойти при обновлении с добавлением необходимых разрешений.
Ограничьте доступ к пользовательской информации и обеспечьте ее безопасность.
Запрашивайте у расширения только минимально необходимый объем данных . Чем меньше информации запрашивает расширение у пользователя, тем меньше риск взлома.
Все запрашиваемые пользовательские данные следует обрабатывать с осторожностью. Храните и извлекайте данные на защищенном сервере с зарегистрированным доменом. Всегда используйте HTTPS для подключения и избегайте хранения конфиденциальных пользовательских данных на стороне клиента расширения, поскольку хранилище расширений не зашифровано.
Сохранение данных и режим инкогнито
Расширения могут сохранять данные, используя API хранилища , или отправляя запросы к серверу, которые приводят к сохранению данных. Когда расширению необходимо что-то сохранить, сначала следует определить, находится ли оно в режиме инкогнито. По умолчанию расширения не работают в режимах инкогнито.
Режим инкогнито гарантирует, что окно не оставит следов. При работе с данными из окон в режиме инкогнито расширения должны соблюдать это обещание. Если расширение обычно сохраняет историю просмотров, не следует сохранять историю из окон в режиме инкогнито. Однако расширения могут сохранять настройки из любого окна, в режиме инкогнито или нет.
Чтобы определить, находится ли окно в режиме инкогнито, проверьте свойство incognito соответствующего объекта tabs.Tab или windows.Window .
function saveTabData(tab) {
if (tab.incognito) {
return;
} else {
chrome.storage.local.set({data: tab.url});
}
}