Защитите конфиденциальность пользователей

Пользователи не будут устанавливать расширение, если оно ставит под угрозу их конфиденциальность или запрашивает дополнительные разрешения, которые ему кажутся необходимыми. Запросы на разрешения должны иметь смысл для пользователей и ограничиваться важной информацией, необходимой для реализации расширения. Расширения, собирающие или передающие любые пользовательские данные, должны соответствовать политике конфиденциальности пользовательских данных .

Защищайте и уважайте пользователей расширений, включив эти меры предосторожности, чтобы сохранить их личность в безопасности. Помните: чем к меньшему количеству данных может получить доступ расширение, тем меньше данных оно может случайно утечь.

Уменьшите необходимые разрешения

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 для подключения и избегайте хранения конфиденциальных пользовательских данных на клиентской стороне расширения, поскольку хранилище расширения не зашифровано.