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 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.

Avertissements concernant l'autorisation des extensions lors de l'installation

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.

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

L'extension offre une fonctionnalité supplémentaire : afficher les principaux sites de l'utilisateur. Cette fonctionnalité requiert topSites, qui comporte un avertissement.

Avertissement concernant l'extension pour l'API topSites

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:

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 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 ou tabs.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:

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.

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 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.

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

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.

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

Chrome crée deux fichiers : un fichier .crx et un fichier .pem, qui contient l'extension clé privée.

Fichiers d&#39;extension empaquetés

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.

Déposer le fichier pour installer

Une fois le fichier .crx supprimé, le navigateur vous demandera si l'extension peut être ajoutée et affiche d'avertissements.

Avertissement concernant l&#39;extension Nouvel onglet

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
  • "http://*/*"
  • "https://*/*"
  • "*://*/*"
  • "<all_urls>"
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.
  • Accéder au backend du débogueur de pages
  • Consulter et modifier toutes vos données sur les sites Web que vous consultez
"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.

Autorisation &quot;Ajouter des onglets&quot;

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

Pour éviter cela, rendez la nouvelle fonctionnalité facultative et ajoutez de nouvelles autorisations optional_permissions dans le fichier manifeste.