Saltar al contenido

Si tu aplicación acepta complementos

El caso más difícil: código de terceros corriendo dentro de tu aplicación. Las cuatro arquitecturas posibles, lo que cada una garantiza de verdad, y por qué una webview no es una de ellas.

Por qué una webview no sirve

La idea que todo el mundo tiene primero: «cargo el complemento en un iframe y ya está aislado». No lo está, por tres razones acumuladas:

  • Si el iframe tiene acceso al puente, tiene tus capabilities. Es el nivel 32.1 otra vez.
  • Si no lo tiene, no puede hacer nada útil, y entonces no es un sistema de complementos: es un visor.
  • Y en cuanto abres un canal para que sí pueda hacer algo, el canal es la superficie, y estás en el mismo problema pero con una capa de por medio que te da falsa sensación de seguridad.

El aislamiento del navegador está pensado para separar orígenes, no para separar capacidades de código que tú mismo has decidido cargar. Es una herramienta parecida a la que hace falta, y usarla para esto es el error de categoría de este nivel.

Las cuatro arquitecturas

Las dos del medio son las que aíslan de verdad, y por la misma razón: el complemento corre en un entorno donde no existe nada que tú no hayas puesto. No es que tenga prohibido leer ficheros: es que no hay ninguna función para leer ficheros a su alcance.

La decisión de verdad: qué expones

Elegida la arquitectura, queda lo que de verdad determina el riesgo: la lista de funciones que un complemento puede llamar. Es tu propia versión del modelo de permisos del nivel 27, y las mismas reglas se aplican.

Las tres cosas que hay que decidir además

Y que se olvidan hasta que duelen:

  • Qué pasa si un complemento se cuelga. Con un intérprete o un entorno acotado se pueden poner límites de tiempo y de memoria. Con un proceso, se puede matar. Con un iframe… se cuelga tu interfaz.
  • Cómo se distribuyen. Si los complementos se instalan desde internet, tienes un problema de suministro —el del nivel 26.2— pero para tus usuarios. Firmas, un registro, o al menos que el usuario vea de dónde viene.
  • Y qué pasa cuando cambias tu API. Los complementos son código de otros que asume tu forma actual. Cambiarla los rompe, y no siempre puedes avisar a sus autores.