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

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

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

Уменьшите количество необходимых разрешений.

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