Controles del usuario para los permisos de organizador: guía de transición

Resumen

¿Cuáles son los cambios?

A partir de Chrome 70, los usuarios pueden restringir el acceso al host de extensiones a una lista personalizada de o configurar extensiones para que requieran un clic a fin de obtener acceso a la página actual.

¿Qué APIs se ven afectadas?

Este cambio afecta a todas las APIs afectadas por los permisos de host especificados en el archivo así como secuencias de comandos de contenido. Las APIs que requieren permisos de host incluyen webRequest, cookies, tabs.executeScript() y tabs.insertCSS(), y ejecutar orígenes cruzados solicitudes, como a través de una XMLHTTPRequest o la API de fetch().

Restringe el acceso

¿Cómo puede restringir el acceso el usuario?

Los usuarios pueden optar por permitir que su extensión se ejecute cuando se hace clic, en un conjunto específico de sitios o en todos los sitios solicitados. Estas opciones se presentan a los usuarios en la página de chrome://extensions, así como en en el menú contextual de la extensión.

Captura de pantalla de los controles del menú contextual para los permisos del host de tiempo de ejecución.
            incluidas las opciones para ejecutar la extensión cuando se hace clic, en un sitio específico o en todos los sitios.

¿Qué sucede si un usuario elige ejecutar mi extensión "al hacer clic"?

En esencia, la extensión se comporta como si usara el permiso activeTab. La extensión es Se le otorgó acceso temporal a cualquier host en el que el usuario haga clic en la extensión, si ese host fue solicitado por la extensión (y no es un sitio restringido, como chrome://settings). Cuando se configura para ejecutarse al hacer clic, Chrome identifica tu extensión con un círculo y una sombra paralela (consulta a continuación) para indicar que es solicitar acceso a un sitio en particular.

Captura de pantalla de las insignias que Chrome agrega al ícono de la extensión en la barra de herramientas

¿Qué sucede si un usuario elige ejecutar mi extensión en sitios específicos?

Tu extensión puede ejecutarse automáticamente en cualquier sitio que el usuario haya elegido, y puede acceder a las sin necesidad de que el usuario realice ninguna acción adicional. En otros sitios en los que la extensión solicitó, pero el usuario no le otorgas permiso, el comportamiento es el mismo que si el usuario hubiera configurado la extensión para que se ejecute al hacer clic.

¿Qué sucede si un usuario elige ejecutar mi extensión en todos los sitios?

La extensión puede acceder automáticamente a cualquier sitio solicitado en el manifiesto.

Comportamientos de las APIs

API de solicitud web

De todos modos, la extensión puede interceptar, modificar y bloquear cualquier solicitud de los sitios a los que tiene acceso. Para sitios a los que la extensión no tiene acceso, Chrome la identifica para indicar que la extensión una extensión solicita acceso a la página. Luego, el usuario podrá otorgar acceso a la extensión. Chrome luego Le pide al usuario que actualice la página para permitir que tu extensión intercepte las solicitudes de red.

Secuencias de comandos de contenido, functions.executeScript(), variables.insertCSS()

La extensión aún puede insertar secuencias de comandos y hojas de estilo automáticamente para cualquier sitio al que tenga acceso. a los que tiene acceso una cuenta. En el caso de los sitios a los que la extensión no tiene acceso, Chrome pinta la extensión para indicar lo siguiente: la extensión solicita acceso a la página. Luego, el usuario puede otorgar acceso a la extensión. Si el botón La secuencia de comandos de contenido se configuró para insertarse en document_idle. La secuencia de comandos lo insertará de inmediato. De lo contrario, Chrome le pide al usuario que actualice la página para permitir que tu extensión inserte secuencias de comandos antes en la carga de la página (en document_start o document_end). Las devoluciones de llamada para tabs.executeScript() y Los métodos tabs.insertCSS() solo se invocan si el usuario otorga acceso al sitio.

XHR de las cookies y de la página de fondo

La extensión aún puede leer y modificar cookies y realizar una XHR de origen cruzado en los sitios que tiene acceso. Como no hay ninguna pestaña asociada con una página de extensión que acceda a la cookies o XHR a otro host, Chrome no asigna una insignia a la extensión para indicarle al usuario que la extensión solicita acceso a un sitio. Intentar acceder a una cookie de otro sitio o hacer una XHR de origen cruzado fallará con un error, como si el manifiesto de la extensión no incluyera el host permiso. En estos casos, te recomendamos usar permisos opcionales para permitir al usuario para otorgar acceso de tiempo de ejecución a diferentes sitios.

En el siguiente ejemplo, se muestra cómo podría funcionar esto para la API de cookies.

Antes:

{
  ...
  "permissions": ["cookies", "https://example.com"]
}
chrome.cookies.get({url: 'https://example.com', name: 'mycookie'},
                    function(cookie) {
                      // Use the cookie.
                    });

Después:

{
  ...
  "permissions": ["cookies"],
  "optional_permissions": ["https://example.com"]
}
// Note: permissions.request() requires a user gesture, so this
// may only be done in response to a user action.
chrome.permissions.request(
    {origins: ['https://example.com']},
    function(granted) {
      if (granted) {
        chrome.cookies.get({url: 'https://example.com', name: 'mycookie'},
                            function(cookie) {
                              // Use the cookie.
                            });
      } else {
        // Handle grant failure
      }
    });

Migración

¿Cuáles son las prácticas recomendadas para evitar verse afectados negativamente?

Las extensiones pueden usar las APIs de permisos opcionales, activeTab y declarativeContent. para seguir las prácticas recomendadas. Los permisos opcionales se conceden en el tiempo de ejecución y permiten que la extensión solicitar acceso específico a un sitio. El permiso activeTab no se ve afectado, y las extensiones siguen funcionando normalmente. La API de declarativeContent reemplaza muchas necesidades. para insertar secuencias de comandos en cada página.

¿Qué sucede con las contraseñas de mis usuarios actuales? configuración?

Este cambio no afectará de inmediato ningún permiso actual otorgado a tu extensión. Es decir, Seguirá funcionando como antes, a menos que el usuario tome medidas para restringir los sitios en los que está tienen permitido el acceso. En versiones futuras, Chrome ofrecerá más controles a los usuarios para ajustar configuración.

¿Cómo puedo verificar si mi extensión tiene permiso para ejecutarse en un sitio?

Puedes usar la API permissions.contains() para verificar si tu extensión se acceso a un origen determinado.