Protege la privacidad del usuario

Los usuarios no instalarán una extensión si pone en riesgo su privacidad o solicita más permisos que parecen ser necesarios. Los usuarios deben comprender las solicitudes de permisos y estas deben limitarse a la información fundamental necesaria para implementar la extensión. Las extensiones que recopilan o transmiten datos del usuario deben satisfacer las políticas incluidas en la sección Protección de la privacidad del usuario.

Protege y respeta a los usuarios de extensiones. Para ello, incluye estas precauciones con el fin de mantener segura su identidad.

Reduce los permisos necesarios

Las APIs a las que puede acceder una extensión se especifican en el campo permissions del manifiesto. Cuantos más permisos se otorguen, más vías tiene un atacante para interceptar información. Solo se deben enumerar las APIs de las que depende una extensión, y se deben tener en cuenta opciones menos invasivas. Cuantos menos permisos solicite una extensión, menos advertencias se mostrarán al usuario. Es más probable que los usuarios instalen una extensión con advertencias limitadas.

Las extensiones no deben permitir el acceso “futuro” a los datos del usuario mediante la solicitud de permisos que no necesitan en la actualidad, pero que podrían implementar en el futuro. Incluye permisos nuevos con actualizaciones de extensiones y considera hacerlos opcionales.

activeTab

A menudo, las extensiones que usan permisos del host para insertar secuencias de comandos pueden reemplazar activeTab. El permiso activeTab otorgará a una extensión acceso temporal a la pestaña actualmente activa, solo cuando el usuario invoque la extensión. El acceso se corta cuando el usuario sale de la pestaña actual o la cierra. Sirve como alternativa para muchos usos de <all_urls>.

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

El permiso activeTab no muestra mensajes de advertencia durante la instalación.

Habilita los permisos opcionales

Incluye permisos opcionales para que los usuarios elijan las funciones y los permisos que necesitan de una extensión. Si una función no es esencial para la funcionalidad principal de una extensión, hazla opcional y mueve la API o el dominio al campo optional_permissions.

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

La inclusión de permisos opcionales permite que una extensión explique por qué necesita un permiso en particular cuando el usuario habilita la función relevante. La extensión puede ofrecer al usuario una opción para habilitar funciones.

Captura de pantalla de una ventana emergente que solicita que se habiliten los permisos

Al hacer clic en OK!, se activará el siguiente evento en el 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();
      }
    }
  );
});

Al usuario se le mostrará la siguiente solicitud.

Captura de pantalla de una solicitud de permisos opcionales.

Los permisos opcionales también se pueden implementar en una actualización de extensión. De esta manera, la nueva función estará disponible para los usuarios sin inhabilitar la extensión, como puede suceder si se actualiza con nuevos permisos obligatorios.

Limita y protege la información de los usuarios

Solo solicita la cantidad mínima de datos que necesita una extensión. Mientras menos información solicite una extensión al usuario, habrá menos exposición si la extensión se ve comprometida.

Todos los datos del usuario solicitados deben tratarse con cuidado. Almacena y recupera datos en un servidor seguro con un dominio registrado. Usa siempre HTTPS para conectarte y evita mantener los datos sensibles del usuario en el cliente de una extensión, ya que el almacenamiento de la extensión no está encriptado.

Almacenamiento de datos y modo Incógnito

Las extensiones pueden guardar datos con la API de storage o mediante solicitudes del servidor que permiten guardar datos. Cuando la extensión necesite guardar algo, primero considera si proviene de una ventana de incógnito. De forma predeterminada, las extensiones no se ejecutan en ventanas de incógnito.

El modo Incógnito promete que la ventana no dejará rastros. Cuando se trata de datos de ventanas de incógnito, las extensiones deben cumplir esta promesa. Si una extensión suele guardar el historial de navegación, no guardes el historial de las ventanas de incógnito. Sin embargo, las extensiones pueden almacenar las preferencias de configuración desde cualquier ventana, ya sea en modo Incógnito o no.

Para detectar si una ventana está en modo Incógnito, verifica la propiedad incognito del objeto tabs.Tab o windows.Window relevante.

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