Protéger la confidentialité des utilisateurs

Les utilisateurs n'installeront pas d'extension si elle compromet leur confidentialité ou demande plus d'autorisations que nécessaire. Les demandes d'autorisation doivent avoir du sens pour les utilisateurs et être limitées aux informations essentielles nécessaires à l'implémentation de l'extension. Les extensions qui collectent ou transmettent des données utilisateur doivent respecter les règles de la section Protection de la confidentialité des utilisateurs.

Protégez et respectez les utilisateurs de votre extension 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 vous accordez d'autorisations, plus un pirate informatique a de chances d'intercepter des informations. Seules les API dont dépend une extension doivent être listées, et des options moins intrusives doivent être envisagées. Moins une extension demande d'autorisations, moins l'utilisateur verra d'avertissements concernant les autorisations. Les utilisateurs sont plus susceptibles d'installer une extension avec des avertissements limités.

Les extensions ne doivent pas "protéger contre l'obsolescence" l'accès aux données utilisateur en demandant des autorisations dont elles n'ont pas besoin actuellement, mais qu'elles pourraient implémenter à l'avenir. Incluez de nouvelles autorisations avec les mises à jour de l'extension et envisagez de les rendre facultatives.

activeTab

Les extensions qui utilisent des autorisations d'hôte pour injecter des scripts peuvent souvent utiliser activeTab à la place. L'autorisation activeTab accorde à une extension un accès temporaire à l'onglet actif, uniquement lorsque l'utilisateur appelle l'extension. L'accès est coupé lorsque l'utilisateur quitte ou ferme l'onglet actuel. Elle 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.

Choisir 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 à la fonctionnalité 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'inclusion d'autorisations facultatives permet à une extension d'expliquer pourquoi elle a besoin d'une autorisation spécifique 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 d&#39;activer les autorisations

Si vous cliquez sur OK, l'événement suivant sera déclenché 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 ensuite invité à répondre à la demande suivante.

Capture d&#39;écran de la demande d&#39;autorisations facultatives.

Des autorisations facultatives peuvent également être implémentées lors de la mise à jour d'une extension. Cela permettra aux utilisateurs de bénéficier de la nouvelle fonctionnalité sans désactiver l'extension, comme cela peut se produire lors d'une mise à jour avec de nouvelles autorisations requises.

Limiter et sécuriser les informations utilisateur

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

Toutes les données utilisateur demandées doivent être traitées avec soin. Stockez et récupérez des 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é.

Enregistrer des données et le mode navigation privée

Les extensions peuvent enregistrer des données à l'aide de l'API storage ou en effectuant des requêtes de serveur qui entraînent l'enregistrement de données. Lorsque l'extension doit enregistrer quelque chose, vérifiez d'abord si cela 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 promet qu'aucune trace ne sera laissée. Lorsqu'elles traitent des données provenant de fenêtres de navigation privée, les extensions doivent respecter cette promesse. Si une extension enregistre normalement l'historique de navigation, ne l'enregistrez pas à partir des fenêtres de navigation privée. Toutefois, les extensions peuvent stocker les préférences de paramètres de n'importe quelle fenêtre, qu'elle soit en mode navigation privée ou non.

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

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