Возможность расширения получать доступ к веб-сайтам и большинству API-интерфейсов Chrome определяется его заявленными разрешениями . Разрешения должны быть ограничены только тем, что необходимо для его функциональности. Ограничение разрешений устанавливает возможности расширения и снижает возможное вторжение в данные, если расширение будет скомпрометировано злоумышленником. Защитите расширения и их пользователей, реализовав явные, минимальные и необязательные разрешения.
Организуйте разрешения
Разрешения — это известные строки, которые ссылаются на API Chrome или соответствуют шаблонам , предоставляющим доступ к одному или нескольким хостам. Они перечислены в манифесте и указаны как обязательные разрешения или дополнительные разрешения .
{
"name": "Permissions Extension",
...
// required permissions
"permissions": [
"activeTab",
"contextMenus",
"storage"
],
// optional permissions
"optional_permissions": [
"topSites",
"http://www.developer.chrome.com/*"
],
...
"manifest_version": 2
}
Ограничьте необходимые разрешения только тем, что необходимо для основных функций расширения. Расширение не должно запрашивать больше разрешений, чем ему необходимо в данный момент; не рассчитывайте на будущее, запрашивая разрешения, которые могут потребоваться при обновлениях.
Разрешения, необходимые для дополнительных функций, должны быть зарегистрированы как дополнительные разрешения . Это позволяет пользователям решать, какой объем доступа они готовы предоставить расширению и какие функции им желательны.
Определите необходимые разрешения
Простому расширению может потребоваться запросить несколько разрешений, и при установке многих разрешений отображаются предупреждения . Пользователи с большей вероятностью будут доверять расширению с ограниченным количеством предупреждений или разъяснением разрешений.
Определите основные функции расширения и какие разрешения для него необходимы. Рассмотрите возможность сделать функции необязательными, если они требуют разрешений с предупреждениями.
Запуск дополнительных разрешений с помощью событий
Основная функциональность образца дополнительного расширения разрешений переопределяет страницу новой вкладки. Одна из функций — отображение цели пользователя на день. Для этой функции требуется только разрешение на хранение , которое не включает предупреждение.
Расширение имеет дополнительную функцию; отображение топ-сайтов пользователя. Для этой функции требуется разрешение topSites , о котором имеется предупреждение.
Разработка функций, которые полагаются на разрешения с предупреждениями как необязательные, и органическое внедрение этих функций дает пользователям возможность без риска познакомиться с расширением. Кроме того, это позволяет пользователям дополнительно настраивать работу с расширением и дает возможность объяснять предупреждения.
Замените разрешение activeTab
Разрешение activeTab
предоставляет временный доступ к сайту, на котором находится пользователь, и позволяет расширению использовать разрешение "tabs"
на текущей вкладке. Во многих случаях он заменяет необходимость в "<all_urls>"
и не отображает никаких предупреждений при установке.
Без ActiveTab:
С активным табом:
Разрешение activeTab
предоставляет расширению временный доступ к текущей активной вкладке, когда пользователь вызывает расширение. Если расширение скомпрометировано, злоумышленнику придется дождаться, пока пользователь вызовет расширение, прежде чем получить доступ, и этот доступ будет длиться только до тех пор, пока вкладка не будет перемещена или закрыта.
Хотя для вкладки включено разрешение activeTab
, расширение может:
- Вызовите
tabs.executeScript
илиtabs.insertCSS
на этой вкладке. - Получите URL-адрес, заголовок и значок этой вкладки через API, который возвращает объект