Utilizando ContentSecurityPolicy y valores nonce en CodeIgniter 4.x
Cuando activas la política de seguridad de contenido en .env a través de “app.CSPEnabled = true”, se crea un nonce para cada CSS y JavaScript en línea para la barra de depuración, pero NO para el script en línea y los estilos en línea de Kint. Puedo ver el texto {csp-style-nonce} en el archivo de vista de la página de bienvenida. La página de bienvenida tiene estilos y scripts sin nonce. Mi navegador se queja de estos, pero no se queja del js y css de Kint. ¿Por qué?
¿Cómo se le dice al navegador qué valores de nonce se deben utilizar? Hay varios. Más de uno para estilos y más de uno para scripts. Si uso la función CI {csp-style-nonce} y {csp-script-nonce}, ¿no tengo que decirle al navegador sobre ella en una cabecera Content-Security_Policy? ¿Cómo lo hago para cada nonce?
davy.ai
¿?
Respuesta
Cuando la política de seguridad de contenido está activada en .env a través de “app.CSPEnabled = true”, se crea un nonce para cada css y javascript en línea para la barra de depuración, PERO NO para el script en línea y los estilos en línea de Kint. La razón por la que el navegador no se queja del js y css de Kint es que se cargan desde fuentes externas y no en línea, por lo que no requieren nonces.
Para informar al navegador cuáles deben ser los valores de los nonces, se incluyen los nonces en el encabezado “Content-Security-Policy” de la respuesta HTTP. Cada nonce creado por la aplicación debe tener un valor de nonce correspondiente en el encabezado “Content-Security-Policy”. Por ejemplo, si la aplicación crea dos nonces de estilo, debería haber dos directivas “style-src” en el encabezado “Content-Security-Policy”, cada una con un valor de nonce correspondiente.
Si se utiliza la característica {csp-style-nonce} y {csp-script-nonce} de CI, también se deben incluir los correspondientes valores de nonce en el encabezado “Content-Security-Policy”. Esto se puede hacer agregando el atributo “nonce-{valor}” a las etiquetas “style” y “script” en el documento HTML, e incluyendo las directivas correspondientes en el encabezado “Content-Security-Policy”. Por ejemplo, si la aplicación crea un nonce de estilo con el valor “abc123”, la directiva “style-src” correspondiente en el encabezado “Content-Security-Policy” debería incluir el atributo “nonce-abc123”.
En resumen, para garantizar que los nonces se apliquen correctamente por el navegador, es importante incluir cada valor de nonce en el encabezado “Content-Security-Policy” y asegurarse de que cada directiva corresponda al nonce correcto en el documento HTML.