Angelitedocs ESEN

Inicio › Llevarlo a producción

Seguridad

Modelo de confianza, qué protege AngeLite por defecto y cómo usar trustHtml, trustUrl, CSP y Trusted Types.

El modelo de confianza#

Las plantillas son código tuyo; los datos que muestras no son de fiar. AngeLite está hecho para que un dato no se convierta en HTML, script o URL peligrosa por accidente.

SituaciónQué hace AngeLite
{{ valor }}Siempre se inserta como texto.
href, src, action…Solo pasan http(s), mailto, tel, sms, ftp y rutas relativas; lo demás queda como unsafe:… y avisa en consola.
[innerHTML]Solo pinta HTML envuelto en trustHtml(); cualquier otro valor se inserta como texto.
[onclick], [srcdoc], bindings sobre <script>, <base>, <link>Error de compilación.
ExpresionesNunca reciben window ni document, vengan de donde vengan.
eval / new FunctionNo se usan: funciona con una CSP sin unsafe-eval y soporta Trusted Types.

Cuando sí quieres HTML o un esquema propio#

import { signal, trustHtml, trustUrl } from '@duvanjamid/angelite';

html = signal(trustHtml(DOMPurify.sanitize(comentario)));   // sanea antes: tú te haces responsable
link = signal(trustUrl('whatsapp://send?text=hola'));       // esquema permitido a propósito
trustHtml no sanea

Solo marca el valor como de confianza. Si el HTML viene de un usuario, pásalo antes por un sanitizador como DOMPurify.

CSP y Trusted Types#

Content-Security-Policy: default-src 'self'; script-src 'self';
  require-trusted-types-for 'script'; trusted-types angelite

Con la política angelite el navegador solo acepta HTML que haya pasado por trustHtml().

Defensa en profundidad, no un límite

El sandbox de expresiones reduce el daño, pero no es una frontera de seguridad. Nunca compiles plantillas que incluyan datos de usuario; en producción precompila. Más detalle en SECURITY.md.