Пользователи не будут устанавливать расширение, если оно ставит под угрозу их конфиденциальность или запрашивает дополнительные разрешения, которые ему кажутся необходимыми. Запросы на разрешения должны иметь смысл для пользователей и ограничиваться важной информацией, необходимой для реализации расширения. Расширения, которые собирают или передают любые пользовательские данные, должны соответствовать политике защиты конфиденциальности пользователей .
Защищайте и уважайте пользователей расширений, включив эти меры предосторожности, чтобы сохранить их личность в безопасности.
Уменьшите необходимые разрешения
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});
}
}