Пользователи не будут устанавливать расширение, если оно ставит под угрозу их конфиденциальность или запрашивает дополнительные разрешения, которые ему кажутся необходимыми. Запросы на разрешения должны иметь смысл для пользователей и ограничиваться важной информацией, необходимой для реализации расширения. Расширения, собирающие или передающие любые пользовательские данные, должны соответствовать политике конфиденциальности пользовательских данных .
Защищайте и уважайте пользователей расширений, включив эти меры предосторожности, чтобы сохранить их личность в безопасности. Помните: чем к меньшему количеству данных может получить доступ расширение, тем меньше данных оно может случайно утечь.
Уменьшите необходимые разрешения
API-интерфейсы, к которым может получить доступ расширение, указаны в поле разрешений манифеста . Чем больше разрешений предоставлено, тем больше возможностей у злоумышленника для перехвата информации. В списке должны быть указаны только те API, от которых зависит расширение, и следует рассмотреть менее инвазивные варианты. Чем меньше разрешений запрашивает расширение, тем меньше предупреждений о разрешениях будет показано пользователю. Пользователи с большей вероятностью установят расширение с ограниченным количеством предупреждений.
Расширения не должны иметь доступ к пользовательским данным, ориентированный на будущее, путем запроса разрешений, которые им в настоящее время не нужны, но могут быть реализованы в будущем. Включите новые разрешения в обновления расширений и рассмотрите возможность сделать их необязательными .
активная вкладка
Расширения, использующие разрешения хоста для внедрения сценариев, часто могут заменить вместо этого activeTab
. Разрешение activeTab
предоставит расширению временный доступ к текущей активной вкладке только тогда, когда пользователь вызывает расширение. Доступ прекращается, когда пользователь уходит с текущей вкладки или закрывает ее. Он служит альтернативой для многих вариантов использования <all_urls>
.
{
"name": "Very Secure Extension",
"version": "1.0",
"description": "Example of a Secure Extension",
"permissions": ["activeTab"],
"manifest_version": 2
}
Разрешение activeTab не отображает предупреждающие сообщения во время установки.
Выберите дополнительные разрешения
Предоставьте пользователям возможность выбирать, какие функции и разрешения расширения им нужны, включив дополнительные разрешения . Если функция не важна для основных функций расширения, сделайте ее необязательной и переместите API или домен в поле optional_permissions
.
{
"name": "Very Secure Extension",
...
"optional_permissions": [ "tabs", "https://www.google.com/" ],
...
}
Включение дополнительных разрешений позволяет расширению объяснять, почему ему требуется определенное разрешение, когда пользователь включает соответствующую функцию. Расширение может предлагать пользователю возможность включить функции.
Нажимаем «ОК!». вызовет следующее событие в фоновом сценарии.
document.querySelector('#button').addEventListener('click', function(event) {
// Permissions must be requested from inside a user gesture, like a button's
// click handler.
chrome.permissions.request({
permissions: ['tabs'],
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 для подключения и избегайте хранения конфиденциальных пользовательских данных на клиентской стороне расширения, поскольку хранилище расширения не зашифровано.