La capacité d'une extension à accéder aux sites Web et à la plupart des API Chrome est déterminée par sa déclaration autorisations. Les autorisations doivent être limitées au seul élément nécessaire à son fonctionnement. Limiter les autorisations permet d'établir les capacités d'une extension et de réduire le risque d'intrusion dans les données si l'extension est compromise par un pirate informatique. Protéger les extensions et leurs utilisateurs en implémentant des autorisations explicites, minimales et facultatives.
Organiser les autorisations
Les autorisations sont des chaînes connues qui font référence à une API Chrome ou qui correspondent à des formats qui accordent l'accès à un ou plusieurs hôtes. Ils sont listés dans le fichier manifeste et spécifiés comme autorisations requises ou autorisations facultatives.
{
"name": "Permissions Extension",
...
// required permissions
"permissions": [
"activeTab",
"contextMenus",
"storage"
],
// optional permissions
"optional_permissions": [
"topSites",
"http://www.developer.chrome.com/*"
],
...
"manifest_version": 2
}
Limitez les autorisations requises aux seules autorisations nécessaires à la fonctionnalité de base de l'extension. Une l'extension ne doit pas demander plus d'autorisations que nécessaire. ne pas préparer l'avenir en demandant les autorisations qui peuvent être nécessaires avec les mises à jour.
Les autorisations nécessaires pour accéder aux fonctionnalités facultatives doivent être enregistrées en tant qu'autorisations facultatives. Ce permet aux utilisateurs de décider du niveau d'accès qu'ils souhaitent accorder à l'extension et des fonctionnalités sont souhaitées.
Identifier les autorisations requises
Une simple extension peut nécessiter plusieurs autorisations, et de nombreuses autorisations s'affichent avertissements lors de l'installation. Les utilisateurs sont plus susceptibles de faire confiance à une extension qui ne présente qu'un nombre limité d'avertissements ou quand les autorisations leur sont expliquées.
Identifier la fonctionnalité de base d'une extension et les autorisations requises pour celle-ci. Envisagez d'utiliser Rendre les fonctionnalités facultatives si elles nécessitent des autorisations accompagnées d'avertissements.
Déclencher des autorisations facultatives avec des événements
La fonctionnalité de base de l'exemple d'extension d'autorisations facultatives remplace celle de la page "Nouvel onglet". Une fonctionnalité permet d'afficher l'objectif de la journée de l'utilisateur. Cette fonctionnalité ne nécessite que l'espace de stockage l'autorisation, qui n'inclut pas d'avertissement.
L'extension offre une fonctionnalité supplémentaire : afficher les principaux sites de l'utilisateur. Cette fonctionnalité requiert topSites, qui comporte un avertissement.
Développer des fonctionnalités reposant sur des autorisations facultatives avec des avertissements et introduire ces permet aux utilisateurs de découvrir l'extension sans risque. De plus, ce permet aux utilisateurs de personnaliser davantage leur expérience avec une extension et offre ainsi la possibilité de expliquer les avertissements.
Remplacer l'autorisation activeTab
L'autorisation activeTab
accorde un accès temporaire au site sur lequel se trouve l'utilisateur et permet
pour utiliser l'autorisation "tabs"
dans l'onglet actif. Elle remplace la nécessité
"<all_urls>"
dans de nombreux cas et n'affiche aucun avertissement à l'installation.
Sans activeTab:
Avec activeTab:
L'autorisation activeTab
accorde à une extension un accès temporaire à l'onglet actuellement actif lorsque la
L'utilisateur appelle l'extension. Si l’extension est compromise, l’attaquant doit attendre
pour que l'utilisateur appelle l'extension avant d'obtenir l'accès. Cet accès ne durerait que jusqu'à
si l'onglet navigue ou se ferme.
Lorsque l'autorisation activeTab
est activée pour un onglet, une extension peut:
- Appelez
tabs.executeScript
outabs.insertCSS
sur cet onglet. - Obtenez l'URL, le titre et le favicon de cet onglet via une API qui renvoie un objet
tabs.Tab
. - Intercepter les requêtes réseau dans l'onglet avec l'origine du frame principal de l'onglet à l'aide de webRequest API. L'extension obtient temporairement les autorisations de l'hôte pour l'origine du frame principal de l'onglet.
Les gestes utilisateur suivants activent activeTab
:
- Exécuter une action de navigateur
- Exécuter une action sur la page
- Exécuter un élément de menu contextuel
- Exécuter un raccourci clavier à partir de l'API commands
- Accepter une suggestion de l'API omnibox
Autoriser l'accès
Si une extension doit accéder aux URL file://
ou fonctionner en mode navigation privée, les utilisateurs devront
activer l'accès à ces fonctionnalités sur la page d'informations de l'extension, à l'adresse chrome://extensions.
Une extension peut détecter si elle est activée en mode navigation privée en appelant
extension.isAllowedIncognitoAccess()
ou peut s'exécuter sur des URL file://
avec
extension.isAllowedFileSchemeAccess()
Comprendre les autorisations
Des avertissements concernant les autorisations existent pour décrire les fonctionnalités accordées par une API aux utilisateurs des extensions, mais
certains de ces avertissements
peuvent ne pas être évidents au premier abord. Par exemple, ajouter le "tabs"
entraîne l'affichage d'un avertissement qui ne semble pas pertinent: l'extension peut lire vos données de navigation
activité physique. Bien que l'API chrome.tabs
puisse être utilisée uniquement pour ouvrir de nouveaux onglets, elle peut également être utilisée
pour voir l'URL associée à chaque nouvel onglet ouvert à l'aide des objets tabs.Tab.
Dans la mesure du possible, implémentez des autorisations facultatives ou une API moins puissante pour éviter de vous alerter. d'avertissements.
Afficher les avertissements
Aucun avertissement d'autorisation ne s'affiche si une extension est chargée en tant que fichier non empaqueté. Pour afficher un
Avertissements concernant les autorisations de l'extension, accéder à chrome://extensions
, vérifier que le mode développeur est activé
et cliquez sur ASSOCIER L'EXTENSION.
Indiquez le chemin d'accès au dossier de l'extension dans le champ "Répertoire racine de l'extension", puis cliquez sur Bouton Empaqueter l'extension. Ignorez le champ Clé privée pour un premier package.
Chrome crée deux fichiers : un fichier .crx
et un fichier .pem
, qui contient l'extension
clé privée.
Ne perdez pas la clé privée. Conservez le fichier .pem
en lieu sûr. ce sera
nécessaire pour mettre à jour l'extension.
Installez le fichier .crx
en le déposant sur la page de gestion de l'extension Chrome.
Une fois le fichier .crx
supprimé, le navigateur vous demandera si l'extension peut être ajoutée et affiche
d'avertissements.
Autorisations avec avertissements
Remarque:Les tables d'autorisations sont mises à jour du mieux possible et peuvent présenter de légères différences.
avec les avertissements actuels. De plus, certaines autorisations peuvent ne pas afficher d'avertissement lorsqu'elles sont associées à
d'autres autorisations. Par exemple, l'avertissement "tabs"
ne s'affichera pas si l'extension
demande "<all_urls>"
. Pour vérifier les derniers avertissements affichés concernant les autorisations des extensions, suivez
suivez la procédure décrite dans la section Afficher les avertissements.
Autorisation | Description | Avertissement |
---|---|---|
|
Accorde à l'extension un accès à tous les hôtes. Il est possible d'éviter de déclarer des autorisations d'hôte en utilisant l'autorisation activeTab. | Consulter et modifier toutes vos données sur les sites Web que vous consultez |
"https://HostName.com/" |
Accorde à l'extension l'accès à "https://HostName.com/" . Il est possible d'éviter de déclarer
les autorisations d'hôte à l'aide de l'autorisation activeTab. |
Consulter et modifier vos données sur HostName.com |
"bookmarks" |
Accorde à votre extension l'accès à l'API chrome.bookmarks. | Lire et modifier vos favoris |
"clipboardRead" |
Obligatoire si l'extension utilise document.execCommand('paste') . |
Lire les données que vous copiez et collez |
"clipboardWrite" |
Indique que l'extension utilise document.execCommand('copy') ou
document.execCommand('cut') |
Modifier les données que vous copiez et collez |
"contentSettings" |
Accorde à votre extension l'accès à l'API chrome.contentSettings. | Modifier les paramètres qui contrôlent les sites Web l'accès à des fonctionnalités telles que les cookies, JavaScript, plug-ins, géolocalisation, micro, caméra, etc. |
"debugger" |
Accorde à votre extension l'accès à l'API chrome.debugger. |
|
"declarativeNetRequest" |
Accorde à votre extension l'accès à l'API chrome.declarativeNetRequest. | Bloquer le contenu de la page |
"desktopCapture" |
Accorde à votre extension l'accès à l'API chrome.desktopCapture. | Capturer le contenu de votre écran |
"downloads" |
Accorde à votre extension l'accès à l'API chrome.downloads. | Gérer vos téléchargements |
"geolocation" |
Autorise l'extension à utiliser l'API de géolocalisation HTML5. sans demander l'autorisation à l'utilisateur. | Détecter votre position géographique |
"history" |
Accorde à votre extension l'accès à l'API chrome.history. | Lire et modifier votre historique de navigation |
"management" |
Accorde à l'extension l'accès à l'API chrome.management. | Gérer vos applications, vos extensions et vos thèmes |
"nativeMessaging" |
Accorde à l'extension l'accès à l'API de messagerie native. | Communiquer avec les applications natives coopératives |
"notifications" |
Accorde à votre extension l'accès à l'API chrome.notifications. | Afficher les notifications |
"pageCapture" |
Accorde à l'extension l'accès à l'API chrome.pageCapture. | Consulter et modifier toutes vos données sur les sites Web que vous consultez |
"privacy" |
Accorde à l'extension l'accès à l'API chrome.privacy. | Modifier vos paramètres de confidentialité |
"proxy" |
Accorde à l'extension l'accès à l'API chrome.proxy. | Consulter et modifier toutes vos données sur les sites Web que vous consultez |
"system.storage" |
Accorde à l'extension l'accès à l'API chrome.system.storage. | Identifier et exclure les appareils de stockage |
"tabCapture" |
Accorde aux extensions l'accès à l'API chrome.tabCapture. | Consulter et modifier toutes vos données sur les sites Web que vous consultez |
"tabs" |
Accorde à l'extension l'accès aux champs privilégiés des objets Tab utilisés par plusieurs API
y compris chrome.tabs et chrome.windows. Dans
dans de nombreux cas, l'extension n'aura pas besoin de déclarer l'autorisation "tabs" pour utiliser
ces API. |
Consulter votre historique de navigation |
"topSites" |
Accorde à l'extension l'accès à l'API chrome.topSites. | Consulter la liste des sites Web que vous consultez le plus |
"ttsEngine" |
Accorde à l'extension l'accès à l'API chrome.ttsEngine. | Lire tout le texte énoncé à l'aide de la synthèse vocale |
"webNavigation" |
Accorde à l'extension l'accès à l'API chrome.webNavigation. | Consulter votre historique de navigation |
Modifier les autorisations
La mise à jour d'une extension avec des autorisations supplémentaires peut la désactiver temporairement. L'utilisateur devra le réactiver après avoir accepté les nouveaux avertissements.
Si l'utilisateur met à jour manuellement une extension qui inclut désormais l'autorisation onglets, il recevra un avertissement sur la page de gestion.
Si l'extension est mise à jour automatiquement, elle sera désactivée jusqu'à ce que l'utilisateur accepte les nouvelles autorisations.
Pour éviter cela, rendez la nouvelle fonctionnalité facultative et ajoutez de nouvelles autorisations
optional_permissions
dans le fichier manifeste.