Violaciones del CSP
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)
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 que ya haya solucionado esto
- Si está disponible, prueba la última versión estable antes de actualizar
- 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.
Issue #6685
Los estilos de componentes personalizados no se aplican tras la eliminación y la re-suma
Versión GrapesJS [x] Confirmo que uso la última versión de GrapesJS ¿Qué navegador usas? Chrome v143.0.7499.193 Enlace de demo reproducible...
Issue #5746
El desplazamiento de ColorPicker incorrecto cuando los paneles están fuera del contenedor del editor
Versión GrapesJS [X] Confirmo que se debe usar la última versión de GrapesJS ¿Qué navegador usas? Chrome v122 Enlace de demo reproducible h...
Issue #6666
Panel de capas: arrastrar y soltar hace que los objetos desaparezcan (Firefox y Chrome)
Versión GrapesJS [x] Confirmo que uso la última versión de GrapesJS ¿Qué navegador usas? Firefox 137.0 y Chrome 136.0.7103.92 Enlace de dem...
Issue #6549
No se pudo redimensionar la imagen
Versión GrapesJS [x] Confirmo que uso la última versión de GrapesJS ¿Qué navegador usas? Chrome Enlace de demo reproducible https://codepen...
Plugins de pago que cumplen con este problema
Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.
Cargando recomendaciones de plugins de pago...
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 →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.
Tutorial
GrapesJS vs Webflow vs Tilda (2026): Honest Comparison, Pricing & Which to Pick
GrapesJS vs Webflow vs Tilda compared head-to-head: real 2026 pricing, SEO features, code export, and which one actually fits your project
Tutorial
GrapesJS vs Gutenberg: How to Build a Custom WordPress Page Builder
Compare GrapesJS and Gutenberg, learn when to use each, and follow a step-by-step guide to build a production WordPress page builder with GrapesJS.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.