Estoy tratando de resolver en qué situación se necesitarían las fuentes 'unsafe-inline' y 'unsafe-eval' en la directiva connect-src . Se enumeran aquí como fuentes: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/connect-src
Me parece claro por qué estas fuentes serían necesarias en script-src , simplemente no puedo reconstruir por qué serían necesarias para connect-src , y asumo que debe haber una razón para que MDN las incluya como fuentes en esta directiva.
¿Alguien puede ayudarme a entender o darme el caso de uso? Tome el ejemplo a continuación. Tenga en cuenta que estoy realizando con éxito una solicitud GET a mocky.io desde un script en línea, y luego llamo a eval() con la devolución de llamada SIN la fuente 'inseguro-en línea' o 'inseguro-eval' para la directiva connect-src .
<html lang="en"> <head> <meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-inline' 'unsafe-eval'; connect-src https://run.mocky.io;"> </head> <body> <h1>Testing CSP</h1> <!-- testing any JS executing from unsafe inline --> <script type="text/javascript"> console.log("Testing some unsafe inline"); </script> <!-- testing XHR calls from unsafe inline --> <script type="text/javascript"> const callMocky = () => { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { //eval from the XHR state change eval("console.log('XHR Sent and Received!')") console.log(xhttp.responseText); } }; xhttp.open("GET", "https://run.mocky.io/v3/7ef12b35-8438-424f-8a5f-b11521d03fe7", true); xhttp.send(); } callMocky() </script> <!-- testing unsafe eval from unsafe inline --> <script type="text/javascript"> eval('console.log("this is an unsafe eval!")') </script> </body> </html>