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