Issue #6690💬 RespondidoAbierto el 16 de enero de 2026por HavokInspirationReacciones 0

Violaciones del CSP

Respuesta rápidapor ClaudeCode

Gracias por informar de esto, @HavokInspiration. Los problemas de seguridad y dependencias son importantes. El equipo de GrapesJS trabaja activamente para mantener las dependencias actualizadas. Para ti ahora mismo: Ejecutar 'npm audit fix' para ver los parches disponibles Busca una versión más reciente de GrapesJS qu...

Lee la respuesta completa abajo ↓

Pregunta

Versión GrapesJS

  • Confirmo que uso la última versión de GrapesJS

¿Qué navegador usas?

Chrome 143.0.7499.193

Enlace de demo reproducible

https://grapesjs.com/demo.html

Describe el bicho

Hola.

¿Cómo reproducir el bicho?

Importar GrapeJS en un archivo JS / entorno de nodo:

importar 'grapesjs/dist/css/grapes.min.css';
importar uvas de 'uvas';

en una página web usando estrictas reglas CSP, por ejemplo:

por defecto-src 'ninguno'; base-uri 'ninguno'; bloquear-todo-mixto-contenido ; connect-src 'yo'; font-src 'yo'; forma-acción 'yo'; IMG-SRC 'yo'; manifest-src 'yo'; script-src 'yo' 'dinámico estricto' 'nonce-xxxxxx'; style-src 'yo' 'nonce-xxxxxx'; solicitudes de actualización inseguras

Hacerlo desencadenará muchas violaciones de CSP relacionadas con la aplicación del estilo inline.

El problema

Estamos considerando usar GrapeJS en una actualización importante de nuestro producto SaaS, sin embargo, nos enfrentamos a un gran problema con las reglas de la liberación y CSP. Nuestro jefe de seguridad exige políticas CSP muy estrictas y GrapeJS las viola. Para que GrapeJS funcione correctamente con nuestras reglas base, necesitamos añadir las siguientes reglas:

style-src-attr 'inseguro-inlineado'; style-src-elem 'yo' 'inseguro-inline';

Lo cual va en contra de nuestras políticas de seguridad.

Probamos a usar las siguientes opciones en la librería, sin éxito:

    forceClass: cierto,
    avoidInlineStyle: cierto,

Mientras se usan estas opciones, la biblioteca sigue utilizando:

  • '<style>' Inyección de etiquetas
  • estilo en línea (la mayoría de ellos son lo que parece ser valores "init" como 'display:none' o 'pointer-events:none').

'<style>' Inyección de etiquetas

Esta podría resolverse "fácilmente" permitiendo al usuario de la biblioteca definir un CSP Nonce en la configuración de la biblioteca y añadirlo justo después de la etiqueta ((aquí)[https://github.com/GrapesJS/grapesjs/blob/dev/packages/core/src/canvas/view/FrameView.ts#L356], por ejemplo).

Para fines de prueba, lo probamos editando el código fuente compilado de la lib y conseguimos añadir un nonce ahí, definido en la configuración global de la lib en el método 'init', permitiendo añadir la etiqueta 'style' sin generar violaciones de CSP.

También encontramos una aparición de una etiqueta de estilo (aquí)[https://github.com/GrapesJS/grapesjs/blob/dev/packages/core/src/canvas/view/CanvasView.ts], pero no pudimos acceder a la configuración global de la biblioteca para acceder al CSP Nonce.

En resumen, toda <style>la etiqueta '' añadida por la lib debería ser inyectada con un atributo 'nonce' si la configuración global tiene uno.

Estilo en línea

Parece que se podrían reemplazar los valores de "init" como se ha indicado anteriormente (ya que ya existe una clase 'gsp-hidden' que hace un 'display:none'; debería ser posible hacer lo mismo con todos los estilos, evitando el uso del estilo en línea). Sin embargo, no sabemos si eso sería suficiente para que el liberal cumpla con estrictas normas del CSP.

Al usar la opción 'forceClass', asumimos que todos los estilos añadidos por el editor se empujarán en una clase dentro de una <style>etiqueta '' y esa clase se aplicará a los elementos. Si la etiqueta '<style>' tenía un nonce, debería estar bien con reglas estrictas de CSP.

iframe

Parece que los iframes también se inyectan y aplican estilos en línea o <style>etiqueta '': también deberían ser abordados.

Sobre el "enlace de demostración reproducible"

No puedo darte un Fiddle para reproducirlo porque el problema gira en torno a la cabecera HTTP.

Si necesitas más información, por favor házmelo saber. Muchas gracias por tu tiempo.

Código de conducta

  • Acepto seguir el Código de Conducta de este proyecto

Respuestas (1)

ClaudeCode17 de mayo de 2026

Gracias por informar de esto, @HavokInspiration.

Los problemas de seguridad y dependencias son importantes. El equipo de GrapesJS trabaja activamente para mantener las dependencias actualizadas.

Para ti ahora mismo:

  1. Ejecutar 'npm audit fix' para ver los parches disponibles
  2. Busca una versión más reciente de GrapesJS que ya haya solucionado esto
  3. Si está disponible, prueba la última versión estable antes de actualizar
  4. Si la vulnerabilidad es crítica, 'npm audit fix ---force' es una opción, pero prueba a fondo

Entendiendo el riesgo:

  • Revisar los detalles específicos de vulnerabilidades en los Avisos de Seguridad de GitHub
  • No todos los problemas de alta gravedad afectan a tu ruta de código
  • Algunas vulnerabilidades solo se activan bajo condiciones específicas

Manteniéndome al día:

  • Atentos a nuevos lanzamientos de GrapesJS
  • Suscribirse a las notificaciones de seguridad en el repositorio
  • El equipo prioriza las actualizaciones de seguridad en su ciclo de lanzamiento

Preguntas y respuestas relacionadas

Continúa investigando con debates sobre temas similares.

Plugins de pago que cumplen con este problema

Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.

Ver todos los plugins

Cargando recomendaciones de plugins de pago...

Opción gratuita

Consulta los plugins de código abierto de GrapesJS en GitHub O haz una búsqueda rápida en nuestro catálogo gratuito.

Explora plugins gratuitos →
Opción premium

Los plugins premium incluyen soporte, actualizaciones regulares y funciones listas para producción — ahorrando días de trabajo de integración.

Explora plugins premium →

Tutoriales relacionados

Guías detalladas sobre el mismo tema.

Todos los tutoriales →

Explorar categorías de plugins

Ve directamente a las páginas de categorías de plugins en el marketplace.