¿Por qué Chrome me dice que la directiva CSP 'require-sri-for' se implementa detrás de una bandera que actualmente está deshabilitada?

2

En mi Política de Seguridad de Contenido he incluido require-sri-for script . Sin embargo, en la consola de Chrome recibo un aviso (no un error, solo información):

  

La directiva de Política de Seguridad de Contenido 'require-sri-for' se implementa detrás de una bandera que actualmente está deshabilitada.

En la medida en que puedo interpretar esto, me está diciendo que estoy tratando de requerir un SRI para algo que está deshabilitado de todos modos. Por ejemplo, si tengo: script-src 'none' , entonces no tendría sentido tener require-sri-for script , ya que todas las secuencias de comandos no están permitidas de todos modos.

Sin embargo, el aviso aún se muestra cuando tengo script-src 'self' .

¿Cuál es el significado correcto de este aviso y qué debo hacer para solucionarlo?

    
pregunta jamieweb 24.02.2018 - 17:37
fuente

3 respuestas

4

Chrome le dice que conoce la directiva, pero el navegador está configurado actualmente para ignorarlo, sin importar si se aplicaría o no.

SRI (Subresource Integrity), como una Recomendación del W3C , es de junio de 2016, pero require-sri-for , el Contenido Directiva de política de seguridad, se introdujo más adelante en Borrador del editor en agosto de 2016. Los borradores son < se proporciona para discusión solamente y puede cambiar en cualquier momento. Y estas funciones experimentales generalmente no están habilitadas de manera predeterminada para hacer espacio para cambios en la implementación, especificación o ambos.

Cuando Chrome detecte la directiva en una política, primero verificará si las funciones experimentales están habilitadas, y analizará la directiva y su valor si es así. Si las funciones experimentales no están habilitadas, registrará el mensaje que está viendo:

  

La directiva de Política de Seguridad de Contenido 'require-sri-for' se implementa detrás de una bandera que actualmente está deshabilitada.

Informará el mensaje incluso si las secuencias de comandos se deshabilitarían más tarde con script-src 'none' , el mensaje se registra en la consola antes de analizar la directiva. Puede verlo en el código fuente en CSPDirectiveList::AddDirective method .

Para que el mensaje desaparezca, tienes dos opciones:

  1. Habilita #enable-experimental-web-platform-features en chrome://flags/ (copia este chrome://flags/#enable-experimental-web-platform-features y pégalo en tu Chrome, reinicia el navegador) y prueba tu política para que estés listo cuando se envíe require-sri-for . esto hará que el mensaje desaparezca solo para un porcentaje muy pequeño de usuarios que habilitaron funciones experimentales en sus navegadores

  2. Elimine require-sri-for de su política, por ejemplo, si no la necesita porque está usando script-src 'none' , y luego vuelva a agregarla una vez que desee verificar las secuencias de comandos

  3. Espere hasta que Chrome habilite la función para todos, hasta que los usuarios vean el mensaje en la consola, incluso si no está verificando la integridad de los scripts cargados

Personalmente opto por la opción 3, pero habilité temporalmente la bandera para ver si el sitio funcionaría una vez que se envíe require-sri-for .

    
respondido por el Michal Špaček 28.03.2018 - 17:46
fuente
3

Esto significa que la función require-sri-for está deshabilitada en chrome://flags . Sin embargo, no he podido encontrar una marca relevante que lo habilite.

La Documentación de Mozilla afirma que require-sri-for ha sido compatible con Chrome desde v54, sin embargo, he probado las últimas versiones de Chrome y Chromium, y este no parece ser el caso.

Esto parece ser un error conocido en Chrome que actualmente no tiene solución.

Editar 2018-03-29 : he cambiado la respuesta aceptada a la de Michal Špaček: la marca de misterio es #enable-experimental-web-platform-features .

    
respondido por el jamieweb 02.03.2018 - 18:21
fuente
1

Cuando los proveedores de navegadores despliegan nuevas funciones, a menudo primero las ocultan detrás de una bandera. Los usuarios tienen que optar explícitamente a la característica para usarla. Esto les da a los proveedores una pequeña población de usuarios para "experimentar". En Chrome, encuentras las banderas en la página chrome://flags .

Por lo tanto, el mensaje que recibes te dice que esta función no está activa en Chrome a menos que la actives. Echar un vistazo a la página de Mozilla para esta directiva, debería estar activada sin una bandera de Chrome 54 en adelante. Sin embargo, Firefox aún requiere un indicador, e IE / Edge no lo implementa en absoluto.

En otras palabras, la directiva require-sri-for CSP ofrece protección a algunos de sus usuarios, pero no a todos. Sin embargo, como usted mismo señala, si tiene script-src 'none' , no tiene sentido solicitar SRI para los scripts que están prohibidos de todos modos.

    
respondido por el Anders 26.02.2018 - 11:29
fuente

Lea otras preguntas en las etiquetas