Si uso el CSP require-sri-for, ¿el script y el estilo cargados desde mi sitio seguirán siendo accesibles?

1

Uso la siguiente regla de CSP:

Content-Security-Policy: require-sri-for script style

Sé que si carga estilo y script desde un CDN, se bloqueará si no incluyo su hash.

Pero si sirvo mi script y mi estilo desde mi propio dominio, ¿seguirá siendo accesible? (CORS está deshabilitado)

Pido esto porque un visitante del sitio me lo envía:

2017-02-18 21:52:14.622 example.com/:1 Refused to load the stylesheet 'https://example.com/assets/css/main.css' because 'require-sri-for' directive requires integrity attribute be present for all stylesheets.
2017-02-18 21:52:14.632 example.com/:1 Refused to load the script 'https://example.com/assets/js/main.min.js' because 'require-sri-for' directive requires integrity attribute be present for all scripts.
2017-02-18 21:52:14.633 example.com/:1 Refused to load the script 'https://example.com/assets/js/katex.min.js' because 'require-sri-for' directive requires integrity attribute be present for all scripts.
2017-02-18 21:52:14.633 example.com/:1 Refused to load the script 'https://example.com/assets/js/section.min.js' because 'require-sri-for' directive requires integrity attribute be present for all scripts.
2017-02-18 21:52:14.633 example.com/:1 Refused to load the script 'https://example.com/assets/js/canvas.js' because 'require-sri-for' directive requires integrity attribute be present for all scripts.
2017-02-18 22:01:13.667 example.com/:1 Refused to load the stylesheet 'https://example.com/assets/css/main.css' because 'require-sri-for' directive requires integrity attribute be present for all stylesheets.

Esto no suena normal y no pude reproducirlo en ningún dispositivo.

Editar

Descubrí que es posible agregar un hash SRI al estilo y al script, pero la pregunta sigue siendo, ¿es necesario hacerlo?

    
pregunta Hartanto 19.02.2017 - 05:33
fuente

1 respuesta

2

require-sri-for no menciona nada acerca de las excepciones o exenciones para los sub-recursos del mismo origen, por lo que supondría que debería incluir el hash independientemente del lugar desde donde se cargue el recurso.

Desde MDN:

  

HTTP Content-Security-Policy require-sri-for indica al cliente que requiera el uso de Integridad del sub-recurso para scripts o estilos en la página.

Y subsection 3.3.3 en la especificación SRI, con respecto al require-sri-for CSP directiva y solicitud de verificación:

  

3.3.3. Aplicar algoritmo para solicitar

     

La comprobación previa a la solicitud de esta directiva es la siguiente:

     

Dada una solicitud ( solicitud ) y una política ( política ):

     
  1. Deje que tipos de recursos protegidos sean el resultado de ejecutar §3.3.2 Análisis de require-sri-for sobre el valor de esta directiva.
  2.   
  3. Si el destino de request es una coincidencia ASCII entre mayúsculas y minúsculas para al menos un token en tipos de recursos protegidos y request 's metadatos de integridad es la cadena vacía, devuelve "Bloqueado".
  4.   
    

Nota: esta lógica significa que la solicitud con el destino coincidente y los metadatos de integridad faltantes se bloquearán incluso si actualmente no es posible configurar los metadatos de integridad. Dichas solicitudes se originan, por ejemplo, en los elementos importScripts() , CSS ' @import o script / style sin atributo de contenido de origen cruzado.

  
     
  1. Devuelve "Permitido".
  2.   

Dependiendo de su proceso de construcción, es bastante fácil generar hashes para su propio contenido. Hay un montón de herramientas enumeradas en el artículo de Mozilla Hacks sobre SRI.

    
respondido por el rink.attendant.6 20.03.2017 - 15:56
fuente

Lea otras preguntas en las etiquetas