Estoy tratando de poner en producción una aplicación Angular 12 y tengo problemas para agregar un nonce para admitir un script en línea (de una fuente de terceros). El script de terceros admite el uso de un nonce basado en una configuración personalizada en su extremo.
La Política de seguridad de contenido (CSP) se define como una metaetiqueta en index.html y requiere que el nonce se defina allí, así como en línea con la etiqueta del script (tal como lo entiendo). Idealmente, me gustaría eliminar la metaetiqueta y definir el encabezado en el archivo web.config que usa el entorno de Azure App Service Host. También espero agregar un encabezado de Informe de política de seguridad de contenido solamente, que no se admite como metaetiqueta, allí también.
La aplicación requiere un CSP bastante restrictivo donde la directiva script-src no puede incluir unsafe-inline; esto debería agregar protección contra XSS.
Basado en mi investigación, no puedo encontrar una solución a esto. Todo lo que veo asume el uso de nginx (como servidor web) y requiere alguna configuración en ese lado. Conozco una solución de .NET Core en la que puede usar la canalización de solicitud/respuesta para proporcionar la creación de nonce y el reemplazo de token, así como una definición de encabezado CSP para la aplicación. Sin embargo, no estoy usando .NET Core ya que esta es una aplicación Angular pura. El ingeniero de confiabilidad del sitio con el que estoy trabajando se puso en contacto con Microsoft sobre esto y sugirió usar .NET Core y afirmó que no hay soporte para la creación de nonce dentro de Azure Native App Services (que supuestamente usa IIS debajo). Por lo tanto, aboga por que la aplicación brinde este apoyo. Simplemente no veo una solución.