Protéger la confidentialité des utilisateurs

Les utilisateurs n'installeront pas une extension si celle-ci porte atteinte à leur vie privée ou demande des autorisations supplémentaires dont elles semblent avoir besoin. Les demandes d'autorisation doivent avoir du sens pour les utilisateurs et se limiter aux informations critiques nécessaires à l'implémentation de l'extension. Les extensions qui collectent ou transmettent des informations sur l'utilisateur doivent respecter les règles décrites dans l'article Protéger la vie privée des utilisateurs.

Protéger et respecter les utilisateurs des extensions en prenant ces précautions pour préserver leur identité.

Réduire les autorisations requises

Les API auxquelles une extension peut accéder sont spécifiées dans le champ permissions du fichier manifeste. Plus il y a d’autorisations accordées, plus un attaquant dispose de moyens pour intercepter des informations. Seules les API dont dépend une extension doivent être répertoriées, et des options moins invasives doivent être prises en compte. Moins une extension demande d'autorisations, moins l'utilisateur reçoit d'avertissements. Les utilisateurs sont plus susceptibles d'installer une extension avec un nombre d'avertissements limité.

Les extensions ne doivent pas pérenniser l'accès aux données utilisateur en demandant des autorisations dont elles n'ont pas besoin actuellement, mais qu'elles pourraient mettre en œuvre à l'avenir. Incluez de nouvelles autorisations avec les mises à jour d'extension et envisagez de les rendre facultatives.

activeTab

Les extensions qui utilisent des autorisations d'hôte pour injecter des scripts peuvent souvent remplacer activeTab. L'autorisation activeTab n'accorde à une extension un accès temporaire à l'onglet actuellement actif que lorsque l'utilisateur appelle l'extension. L'accès est interrompu lorsque l'utilisateur quitte l'onglet actif ou le ferme. Il sert d'alternative à de nombreuses utilisations de <all_urls>.

{
  "name": "Very Secure Extension",
  "version": "1.0",
  "description": "Example of a Secure Extension",
  "permissions": ["activeTab"],
  "manifest_version": 3
}

L'autorisation activeTab n'affiche aucun message d'avertissement lors de l'installation.

Activer les autorisations facultatives

Permettez aux utilisateurs de choisir les fonctionnalités et les autorisations dont ils ont besoin dans une extension en incluant des autorisations facultatives. Si une fonctionnalité n'est pas essentielle au fonctionnement de base d'une extension, rendez-la facultative et déplacez l'API ou le domaine dans le champ optional_permissions.

{
  "name": "Very Secure Extension",
  ...
  "optional_permissions": [ "tabs", ],
  "optional_host_permissions": ["https://www.google.com/" ],
  ...
}

L'ajout d'autorisations facultatives permet à une extension d'expliquer pourquoi elle a besoin d'une autorisation particulière lorsque l'utilisateur active la fonctionnalité concernée. L'extension peut proposer à l'utilisateur d'activer des fonctionnalités.

Capture d&#39;écran d&#39;un pop-up demandant l&#39;activation des autorisations

Cliquez sur OK déclenche l'événement suivant dans le service worker.

chrome.action.onClicked.addListener((event) => {
  // Permissions must be requested from inside a user gesture, like a button's
  // click handler.
  chrome.permissions.request(
    {
      permissions: ["tabs", "scripting"],
      origins: ['https://www.google.com/']
    },
    function (granted) {
      // The callback argument will be true if the user granted the permissions.
      if (granted) {
        // doSomething();
      } else {
        // doSomethingElse();
      }
    }
  );
});

L'utilisateur est alors invité à envoyer la requête suivante.

Capture d&#39;écran d&#39;une demande d&#39;autorisations facultative.

Des autorisations facultatives peuvent également être implémentées dans une mise à jour d'extension. La nouvelle fonctionnalité sera ainsi accessible aux utilisateurs sans désactiver l'extension, comme cela peut se produire si vous effectuez une mise à jour avec de nouvelles autorisations requises.

Limitez et sécurisez les informations utilisateur

Ne demandez que la quantité minimale de données dont une extension a besoin. Moins une extension demande d'informations à l'utilisateur, moins l'exposition est limitée si l'extension est compromise.

Toutes les données utilisateur demandées doivent être traitées avec soin. Stockez et récupérez les données sur un serveur sécurisé avec un domaine enregistré. Utilisez toujours HTTPS pour vous connecter et évitez de conserver des données utilisateur sensibles côté client d'une extension, car le stockage des extensions n'est pas chiffré.

Enregistrement des données et mode navigation privée

Les extensions peuvent enregistrer des données à l'aide de l'API storage ou en effectuant des requêtes serveur qui entraînent l'enregistrement de données. Lorsque l'extension doit enregistrer un élément, déterminez d'abord si elle provient d'une fenêtre de navigation privée. Par défaut, les extensions ne s'exécutent pas dans les fenêtres de navigation privée.

Le mode navigation privée garantit que la fenêtre ne laissera aucune piste. Lorsqu'il s'agit de données provenant de fenêtres de navigation privée, les extensions doivent tenir cette promesse. Si une extension enregistre normalement l'historique de navigation, n'enregistrez pas l'historique à partir des fenêtres de navigation privée. Toutefois, les extensions peuvent stocker vos préférences de paramètres à partir de n'importe quelle fenêtre, en mode navigation privée ou non.

Pour déterminer si une fenêtre est en mode navigation privée, vérifiez la propriété incognito de l'objet tabs.Tab ou windows.Window approprié.

function saveTabData(tab) {
  if (tab.incognito) {
    return;
  } else {
    chrome.storage.local.set({data: tab.url});
  }
}