Pegjs: Agregue una alternativa que no sea de Eval para la compatibilidad de la política de seguridad del contenido

Creado en 24 oct. 2019  ·  12Comentarios  ·  Fuente: pegjs/pegjs

Refactorización: eliminar "eval" de la biblioteca

  • Informe de error: Política de seguridad de contenido

Prerrequisitos

  • ** ¿Puedes reproducir el problema ?: SI
  • ** ¿Buscaste los problemas del repositorio ?: SÍ
  • ** ¿Revisaste los foros ?: no
  • ** ¿Realizaste una búsqueda en la web (google, yahoo, etc.) ?: sí

Descripción

Pasos para reproducir

Encabezado del conjunto de servidores: Content-Security-Policy: default-src https:

  1. Cargue vendor.js al cliente
  2. Intentando .parse () con pegjs:
    Error (herramientas de desarrollo de Chrome): se negó a ejecutar un script en línea porque viola la siguiente directiva de política de seguridad de contenido: "script-src 'self' 'unsafe-eval'". Se requiere la palabra clave 'inseguro-en línea', un hash ('sha256-NALaJ5yL9XVYFNSX8jAdayjJGG7VDRjzVeu1AYf0Kx0 ='), o un nonce ('nonce -...') para habilitar la ejecución en línea.

Software

  • PEG.js: ^ 0.10.0
  • Node.js: 8.12
  • NPM o hilo: 6.41
  • Navegador: Chrome 77, Safari, Firefox
  • Sistema operativo: Mac OS, Ubuntu
discussion feature not-a-bug task

Comentario más útil

Creo que vale la pena agregar una alternativa que no sea eval para la compatibilidad con la Política de seguridad del contenido; verá esto en algún momento antes de 0.12 agregando otro paquete (tal vez llamado dist/peg.csp.js ) a través de un nuevo archivo de entrada para ser consumido solo por Webpack

Todos 12 comentarios

Esto no parece un problema con pegjs.
¿Está cargando sus scripts de una fuente no segura (http?)

Puedo reproducir esto en los protocolos http y https. Se trata de una política de seguridad. Si el código usa la función eval, entonces no se ejecutará, el navegador bloqueará su ejecución.
Tengo una solución para eso, pero no es segura.
Más detalles sobre la política de seguridad:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy

Su enlace es para encabezados http. Usted tiene el control de cualquier encabezado que envíe a su servidor.

Sí, este encabezado está relacionado con la seguridad, pero qué aplicación en 2020 no pensará en la seguridad. Es una práctica bastante común utilizar este enfoque en una aplicación web moderna.
Busqué un poco en Google y noté que las bibliotecas populares ya han realizado esta actualización.
Por lo tanto, no creo que muchas aplicaciones ignoren la seguridad en el futuro y seleccionen las herramientas adecuadas que sean consistentes con esto.

Pegjs es un generador de analizadores sintácticos, es una especie un poco separada de libs JS,
¿Cómo funcionaría JS dentro de la gramática sin eval ing?

No creo que sea una buena solución para un generador de analizador sintáctico. El rendimiento es muy importante aquí después de todo.

Me falta contexto en este tema. ¿Alguien puede señalar con el dedo un fragmento de código relevante?

Creo que vale la pena agregar una alternativa que no sea eval para la compatibilidad con la Política de seguridad del contenido; verá esto en algún momento antes de 0.12 agregando otro paquete (tal vez llamado dist/peg.csp.js ) a través de un nuevo archivo de entrada para ser consumido solo por Webpack

Probablemente no lo hagas solo como paquete web. Este problema no es específico del paquete web, y el paquete web está disminuyendo rápidamente, a favor del paquete acumulativo y el paquete.

Honestamente, no hay ninguna razón en particular para dejar eval en su lugar si se proporciona alguna alternativa. No es como si fuera más rápido, como se sugirió extrañamente anteriormente. Todo lo contrario

Esto no debe estar marcado como not-a-bug . De hecho, es un error grave.

¿Fue útil esta página
0 / 5 - 0 calificaciones