Estoy trabajando en una aplicación en la que varios trabajadores web se ejecutan juntos. Estos trabajadores web son desarrollados por terceros y no son de confianza. Se proporcionan API posteriores al mensaje entre sí.
Me gustaría permitir que los trabajadores web tengan acceso seguro al almacenamiento local. IndexedDB es la opción estándar, sin embargo, necesito asegurarme de que un trabajador web malicioso no pueda interferir con los datos de otro trabajador web.
Mi idea original era que podía 'dominar' a cada webworker de alguna manera. Cada uno obtiene acceso a su propia parte de IndexedDB y no puede ver el almacenamiento colocado en otras partes por otros trabajadores web. Por el momento, no creo que esto sea posible ya que necesito que los trabajadores existan juntos en un iframe.
Mi siguiente idea fue tener un único trabajador web de confianza que tuviera acceso a IndexedDB y configurar reglas de zona de pruebas para todos los demás trabajadores web de modo que no pudieran usar IndexedDB en absoluto, sino que debían comunicarse con la API del trabajador web de confianza para almacenar y recuperar datos locales. Mi entendimiento actual es que puedo hacer que esto funcione si uso dos iframes, donde el primer iframe tiene acceso a IndexedDB y ejecuta el trabajador web de confianza, y el segundo iframe está en un dominio diferente donde los trabajadores web no maliciosos saben que no deben usar el almacenamiento.
No soy un gran admirador de la solución de dos iframe: es compleja, tiene gastos generales de rendimiento y requiere que los desarrolladores de trabajadores web sepan que no pueden usar el almacenamiento local de manera segura a pesar de que realmente tienen acceso, y estoy buscando una mejor manera de sandbox trabajadores web específicos lejos de indexeddb.