Google aclara el correo electrónico SharedArrayBuffer

Search Central de Google emitió una aclaración sobre un mensaje confuso enviado la semana pasada por Google Search Console con respecto a los problemas de SharedArrayBuffer. Google también actualizó su guía a guía para habilitar el aislamiento de origen cruzado.

¿Qué es un SharedArrayBuffer?

SharedArrayBuffer, en términos simples, son los métodos de funcionamiento de JavaScript detrás de escena que les ayudan a realizar sus tareas de manera eficiente.

Según la documentación de los trabajadores web de Mozilla:

“Web Workers es un medio simple para que el contenido web ejecute scripts en subprocesos en segundo plano”.

Y según otra página de desarrolladores de Mozilla:

“Con SharedArrayBuffer, ambos trabajadores web, ambos subprocesos, pueden escribir y leer datos desde la misma porción de memoria”.

La memoria es importante porque JavaScript funciona con la memoria del navegador y si la página no la maneja bien, eso puede tener consecuencias no deseadas, como una sobrecarga de memoria.

La página del desarrollador de Mozilla explica con más detalle:

“ArrayBuffers le brinda una forma de manejar algunos de sus datos manualmente, aunque esté trabajando en JavaScript, que tiene administración de memoria automática.

…En una aplicación típica, todo el trabajo lo realiza una sola persona: el hilo principal.

…Y bajo ciertas circunstancias, ArrayBuffers puede reducir la cantidad de trabajo que tiene que hacer el subproceso principal”.

Anuncio publicitario

Continuar leyendo a continuación

Continúa explicando que a veces no es suficiente dividir el trabajo y ahí es donde entran en juego los trabajadores web mencionados anteriormente, compartiendo la misma porción de memoria.

Martin Splitt de Google lo resumió así en 2017 cuando SharedArrayBuffers era una función próxima:

“JavaScript es un subproceso único y los scripts de ejecución prolongada hacen que la página no responda

Web Workers permite ejecutar JavaScript en subprocesos separados, comunicándose con el subproceso principal mediante mensajes.

Los mensajes que transfieren una gran cantidad de datos en TypedArrays o ArrayBuffers generan un gran costo de memoria debido a la clonación de datos

…SharedArrayBuffers es una característica próxima, que permite compartir datos entre subprocesos”.

Por qué recibió el mensaje SharedArrayBuffer

El blog Search Central de Google explica que la razón por la que los editores recibieron el mensaje “misterioso” fue porque algo en sus páginas web estaba usando SharedArrayBuffers, que es un truco de codificación para acelerar los procesos de JavaScript.

Según Google:

“El uso puede deberse a marcos, bibliotecas u otro contenido de terceros incluido en su sitio web”.

Anuncio publicitario

Continuar leyendo a continuación

¿Por qué SharedArrayBuffer (SAB) es un problema?

Los SAB se volvieron problemáticos después del descubrimiento de las vulnerabilidades Spectre y Meltdown.

Estas vulnerabilidades afectan a todas las unidades de procesamiento informático (CPU) y permiten que un atacante lea lo que hay en la memoria. El ataque afecta a todos los dispositivos informáticos, incluidos los dispositivos de Internet de las cosas.

Chrome inicialmente suspendió el uso de SAB, pero luego los volvió a permitir después de una solución que esencialmente aisló los procesos.

Chrome y Firefox cambian la forma en que se manejan SharedArrayBuffers

El motivo del correo electrónico fue un intento de correr la voz sobre cómo Chrome manejará SharedArrayBuffers y para ayudar a los editores a incorporarse a los procesos que harán que sus sitios y sus visitantes sean más seguros.

A fines de mayo de 2021, se lanzará Chrome 91 con una nueva restricción que brindará una defensa más sólida contra las vulnerabilidades Spectre y Meltdown.

“Origen cruzado” es una referencia a recursos (como imágenes, archivos CSS y JavaScript) que se originan fuera de un sitio.

Entonces, lo que está pasando con Chrome 91 y lo que requiere Google es establecer políticas de seguridad en los recursos y, básicamente, bloquear lo que está permitido de acuerdo con las políticas de Chrome (y Firefox) para proteger a los visitantes del sitio y a los editores contra las vulnerabilidades de Spectre.

Eso es bueno para los visitantes del sitio, pero podría ser malo para los editores de sitios que usan objetos SharedArrayBuffer sin aislamiento de origen cruzado.

Según la aclaración de Google (haciendo referencia a Chrome versión 91):

“… el aislamiento de origen cruzado se estandarizó como una forma de habilitar de forma segura el objeto SharedArrayBuffer. A partir de la versión 91, cuyo lanzamiento está previsto para fines de mayo de 2021, Chrome bloqueará el objeto SharedArrayBuffer detrás del aislamiento de origen cruzado.

…Después del lanzamiento de Chrome 91, el objeto SharedArrayBuffer sin aislamiento de origen cruzado ya no funcionará”.

Lo que debe hacer para solucionar el problema de SharedArrayBuffer

Hay dos tareas que deben llevarse a cabo.

  1. Identifique el uso de SAB en su sitio web.
  2. Reparar o eliminar la funcionalidad

Identificación del uso de SAB

Google recomienda estos pasos para identificar SharedArrayBuffers:

“Tienes dos opciones:

Use Chrome DevTools e inspeccione las páginas importantes.
(Avanzado) Utilice la API de informes para enviar informes de obsolescencia a un punto final de informes.
Obtenga información sobre cómo adoptar los enfoques anteriores en Determinar en qué parte de su sitio web se usa SharedArrayBuffer”.

Anuncio publicitario

Continuar leyendo a continuación

La guía de Google para el aislamiento de origen cruzado ofrece instrucciones para usar Chrome Dev Tools para identificar el uso de SharedArrayBuffers.

  1. “Abra Chrome DevTools en la página que sospecha que podría estar usando SharedArrayBuffer.
  2. Seleccione el panel Consola.
  3. Si la página usa SharedArrayBuffer, aparecerá el siguiente mensaje:
    [Deprecation] SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. common-bundle.js:535
  4. El nombre del archivo y el número de línea al final del mensaje (por ejemplo, common-bundle.js:535) indican de dónde proviene SharedArrayBuffer. Si se trata de una biblioteca de terceros, comuníquese con el desarrollador para solucionar el problema. Si se implementa como parte de su sitio web, siga la guía a continuación para habilitar el aislamiento de origen cruzado”.

Enlace: Cómo habilitar el aislamiento de origen cruzado

Mucho para asimilar

Esto es mucho para asimilar porque hay una cantidad significativa de jerga de desarrollo y acrónimos para memorizar.

Las diversas páginas de desarrolladores son difíciles de entender porque tienden a definir múltiples acrónimos al comienzo de los artículos de 2000 palabras y luego se refieren exclusivamente a los acrónimos sin más explicaciones a lo largo del artículo, como si el lector pudiera retener fácilmente el significado de COEP o COOPERATIVA.

Anuncio publicitario

Continuar leyendo a continuación

Citas

Aclaración oficial de Google:
Aclaraciones sobre el mensaje del objeto SharedArrayBuffer

Recurso de información de fondo del encabezado de seguridad: ScottHelme.co.uk
COEP COOP CORP CORS CORB – MIERDA ¡Eso es un montón de cosas nuevas!

Página del desarrollador de Mozilla sobre qué son SharedArrayBuffers:
Una introducción de dibujos animados a ArrayBuffers y SharedArrayBuffers

Página de desarrollador de Google sobre el análisis del aislamiento de origen cruzado
Una guía para analizar el aislamiento de origen cruzado

Página de desarrollador de Google sobre cómo habilitar el aislamiento de origen cruzado
Cómo habilitar el aislamiento de origen cruzado

Publicaciones relacionadas

Botón volver arriba