Déclarer des autorisations et avertir les utilisateurs

La capacité d'une extension à accéder aux sites Web et à la plupart des API Chrome est déterminée par ses autorisations déclarées. Les autorisations doivent être limitées à ce qui est nécessaire au fonctionnement de l'appareil. Limiter les autorisations établit les capacités d'une extension et réduit les risques d'intrusion dans les données si l'extension est compromise par un pirate informatique. Protégez 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 font référence à des modèles de correspondance qui accordent l'accès à un ou plusieurs hôtes. Elles sont répertoriées dans le fichier manifeste et spécifiées en tant qu'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 à celles nécessaires au fonctionnement de base de l'extension. Une extension ne doit pas demander plus d'autorisations que nécessaire. Ne pérennisez pas cette situation en demandant des autorisations qui pourraient être nécessaires pour les mises à jour.

Les autorisations nécessaires pour les fonctionnalités facultatives doivent être enregistrées en tant qu'autorisations facultatives. Cela permet aux utilisateurs de décider du niveau d'accès qu'ils souhaitent accorder à une extension et des fonctionnalités souhaitées.

Identifier les autorisations requises

Une extension simple peut nécessiter plusieurs autorisations, et de nombreuses autorisations affichent des avertissements lors de l'installation. Les utilisateurs sont plus susceptibles de faire confiance à une extension avec des avertissements limités ou lorsque les autorisations leur sont expliquées.

Avertissements concernant les autorisations des extensions lors de l'installation

Identifiez la fonctionnalité de base d'une extension et les autorisations qui lui sont nécessaires. Envisagez de rendre des fonctionnalités facultatives si elles nécessitent des autorisations avec des avertissements.

Déclencher des autorisations facultatives avec des événements

La fonctionnalité de base de l'exemple d'extension d'autorisations facultatives remplace la page "Nouvel onglet". Une fonctionnalité affiche l'objectif de la journée de l'utilisateur. Cette fonctionnalité ne nécessite que l'autorisation storage. Aucun avertissement ne s'affiche.

Bouton d'extension permettant d'activer des fonctionnalités supplémentaires

L'extension comporte une fonctionnalité supplémentaire : afficher les sites les plus populaires de l'utilisateur. Cette fonctionnalité nécessite l'autorisation topSites, qui comporte un avertissement.

Avertissement concernant les extensions pour l'API topSites

Le développement de fonctionnalités reposant sur des autorisations avec des avertissements en tant que fonctionnalités facultatives et leur introduction naturelle pour offrir aux utilisateurs une présentation de l'extension sans risque De plus, cela permet aux utilisateurs de personnaliser davantage leur expérience avec une extension et leur donne la possibilité d'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 à l'extension d'utiliser l'autorisation "tabs" dans l'onglet actuel. Il remplace dans de nombreux cas la nécessité d'utiliser "<all_urls>" et n'affiche aucun avertissement lors de l'installation.

Sans activeTab:

UI des autorisations sans activeTab

Avec activeTab:

UI des autorisations avec activeTab

L'autorisation activeTab accorde à une extension un accès temporaire à l'onglet actuellement actif lorsque l'utilisateur appelle l'extension. Si l'extension est compromise, le pirate informatique doit attendre que l'utilisateur l'appelle avant d'obtenir l'accès. Cet accès ne dure que jusqu'à ce que l'onglet soit consulté ou fermé.

Lorsque l'autorisation activeTab est activée pour un onglet, une extension peut:

  • Appelez tabs.executeScript ou tabs.insertCSS dans cet onglet.
  • Obtenez l'URL, le titre et le favicon de cet onglet via une API qui renvoie un objet tabs.Tab.
  • Interceptez les requêtes réseau dans l'onglet jusqu'à l'origine du frame principal de l'onglet à l'aide de l'API webRequest. L'extension obtient temporairement les autorisations d'hôte pour l'origine du frame principal de l'onglet.

Les gestes d'utilisateur suivants activent activeTab:

Autoriser l'accès

Si une extension doit accéder aux URL file:// ou fonctionner en mode navigation privée, les utilisateurs doivent activer l'accès à ces fonctionnalités sur la page d'informations de l'extension, à l'adresse chrome://extensions.

Autoriser les URL de fichiers et le mode navigation privée sur la page d&#39;informations de l&#39;extension

Une extension peut détecter si elle est activée en mode navigation privée en appelant extension.isAllowedIncognitoAccess() ou en pouvant s'exécuter sur les URL file:// avec extension.isAllowedFileSchemeAccess() .

Comprendre les autorisations

Les avertissements concernant les autorisations permettent de décrire les fonctionnalités accordées par une API aux utilisateurs d'extensions, mais certains de ces avertissements peuvent ne pas être évidents au premier abord. Par exemple, l'ajout de l'autorisation "tabs" entraîne un avertissement qui ne semble pas pertinent: l'extension peut lire votre activité de navigation. Bien que l'API chrome.tabs puisse être utilisée uniquement pour ouvrir les nouveaux onglets, elle permet également d'afficher l'URL associée à chaque onglet ouvert à l'aide de leurs objets tabs.Tab.

Dans la mesure du possible, implémentez des autorisations facultatives ou une API moins puissante pour éviter les avertissements alarmants.

Afficher les avertissements

Aucun avertissement d'autorisation ne s'affiche si une extension est chargée en tant que fichier non empaqueté. Pour afficher les avertissements d'autorisation d'une extension, accédez à chrome://extensions, assurez-vous que le mode développeur est activé, puis cliquez sur EXTENSION DU PACK.

Le mode développeur est coché, puis l&#39;extension Click-Pack est cochée

Spécifiez le chemin d'accès au dossier de l'extension dans le champ "Répertoire racine de l'extension", puis cliquez sur le bouton Empaqueter l'extension. Ignorez le champ Clé privée pour les nouveaux packages.

Spécifiez le chemin de l&#39;extension, puis cliquez sur l&#39;extension

Chrome crée deux fichiers : un fichier .crx et un fichier .pem contenant la clé privée de l'extension.

Fichiers d&#39;extension empaquetés

Ne perdez pas la clé privée ! Conservez le fichier .pem dans un endroit secret et sécurisé, car il 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.

Déposer le fichier à installer

Après avoir supprimé le fichier .crx, le navigateur demande si l'extension peut être ajoutée et affiche des avertissements.

Avertissement relatif à la nouvelle extension d&#39;onglet

Autorisations avec avertissements

Remarque:Les tables d'autorisations sont mises à jour de la façon la plus optimale possible et peuvent présenter de légers écarts avec les avertissements actuels. De plus, certaines autorisations peuvent ne pas afficher d'avertissements lorsqu'elles sont associées à d'autres autorisations. Par exemple, l'avertissement "tabs" ne s'affiche pas si l'extension demande également "<all_urls>". Pour vérifier les avertissements les plus récents affichés pour les autorisations des extensions, suivez la procédure décrite dans Afficher les avertissements.

Autorisation Description Avertissement
  • "http://*/*"
  • "https://*/*"
  • "*://*/*"
  • "<all_urls>"
Permet à l'extension d'accéder à tous les hôtes. Il est possible d'éviter de déclarer des autorisations d'hôte à l'aide de l'autorisation activeTab. Lire 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 des autorisations d'hôte à l'aide de l'autorisation activeTab. Consulter et modifier vos données sur HostName.com
"bookmarks" Permet à votre extension d'accéder à 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" Permet à votre extension d'accéder à l'API chrome.contentSettings. Modifiez les paramètres qui contrôlent l'accès des sites Web à des fonctionnalités telles que les cookies, JavaScript, les plug-ins, la géolocalisation, le micro, l'appareil photo, etc.
"debugger" Permet à votre extension d'accéder à l'API chrome.debugger.
  • Accéder au backend du débogueur de pages
  • Lire et modifier toutes vos données sur les sites Web que vous consultez
"declarativeNetRequest" Permet à votre extension d'accéder à l'API chrome.declarativeNetRequest. Bloquer le contenu de la page
"desktopCapture" Permet à votre extension d'accéder à l'API chrome.desktopCapture. Capturer le contenu de votre écran
"downloads" Permet à votre extension d'accéder à l'API chrome.downloads. Gérer vos téléchargements
"geolocation" Permet à l'extension d'utiliser l'API de géolocalisation HTML5 sans demander l'autorisation de l'utilisateur. Détecter votre position géographique
"history" Permet à votre extension d'accéder à l'API chrome.history. Consulter et modifier votre historique de navigation
"management" Permet à l'extension d'accéder à l'API chrome.management. Gérer vos applications, vos extensions et vos thèmes
"nativeMessaging" Accorde à l'extension un accès à l'API de messagerie native. Communiquer avec des applications natives coopérantes
"notifications" Permet à votre extension d'accéder à l'API chrome.notifications. Afficher les notifications
"pageCapture" Permet à l'extension d'accéder à l'API chrome.pageCapture. Lire 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" Permet à l'extension d'accéder à l'API chrome.proxy. Lire et modifier toutes vos données sur les sites Web que vous consultez
"system.storage" Permet à l'extension d'accéder à l'API chrome.system.storage. Identifier et éjecter des périphériques de stockage
"tabCapture" Permet aux extensions d'accéder à l'API chrome.tabCapture. Lire et modifier toutes vos données sur les sites Web que vous consultez
"tabs" Permet à l'extension d'accéder aux champs privilégiés des objets Tab utilisés par plusieurs API, y compris chrome.tabs et chrome.windows. Dans de nombreux cas, l'extension n'a pas besoin de déclarer l'autorisation "tabs" pour utiliser ces API. Consulter votre historique de navigation
"topSites" Permet à l'extension d'accéder à l'API chrome.topSites. Consulter la liste des sites Web que vous consultez le plus souvent
"ttsEngine" Permet à l'extension d'accéder à l'API chrome.ttsEngine. Lire tout le texte énoncé à l'aide de la synthèse vocale
"webNavigation" Permet à l'extension d'accéder à l'API chrome.webNavigation. Consulter votre historique de navigation

Modifier les autorisations

Mettre à jour 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 tabs, un avertissement s'affiche sur la page de gestion.

Autorisation d&#39;ajout d&#39;onglets

Si l'extension est mise à jour automatiquement, elle sera désactivée jusqu'à ce que l'utilisateur accepte les nouvelles autorisations.

L&#39;extension a été désactivée

Accepter les autorisations

Vous pouvez éviter cela en rendant la nouvelle fonctionnalité facultative et en ajoutant de nouvelles mises à jour d'autorisations à optional_permissions dans le fichier manifeste.