Política de seguridad de contenido: la configuración de la página bloqueó la carga de un recurso

101

Estoy usando CAPTCHA en la carga de la página, pero se bloquea debido a alguna razón de seguridad.

Estoy enfrentando este problema:

    Política de seguridad del contenido: la configuración de la página bloqueó la carga
    de un recurso en
    http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit
    ("script-src http://test.com:8080 'inseguro-en línea' 'inseguro-eval'").

He utilizado la siguiente etiqueta JavaScript y meta:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
<script src="http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit" async defer></script>
Shakti Sharma
fuente
Si fuera usted, intentaría hacerlo con el código del lado del servidor, y no con javascript. JS no es muy bueno con CORS y cosas similares. Google tiene opciones para eso ..
Gogol
He agregado una javascriptetiqueta a esta pregunta, porque la pregunta no tiene nada que ver con jQuery. Afecta a cualquier JavaScript. De hecho, la pregunta sería más útil si eliminara la jQueryetiqueta por completo, pero no me corresponde a mí hacerlo.
Manngo
1
Una respuesta ahora eliminada es correcta. Una razón para la "Política de seguridad del contenido: la configuración de la página bloqueó la carga de un recurso" es si JavaScript no está habilitado o bloqueado (por ejemplo, por NoScript ) en el navegador. En ese caso, parte del resultado del error podría ser "No se pudo procesar la directiva desconocida 'noscript-marker'" .
Peter Mortensen

Respuestas:

84

Ha dicho que solo puede cargar scripts desde su propio sitio (usted mismo). Luego ha intentado cargar un script desde otro sitio ( www.google.com ) y, debido a que lo ha restringido, no puede. Ese es el objetivo de la Política de seguridad de contenido (CSP).

Puede cambiar su primera línea a:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://www.google.com">

O, alternativamente, puede valer la pena eliminar esa línea por completo hasta que descubra más sobre CSP. Su CSP actual es bastante laxo de todos modos (permitiendo unsafe-inline, unsafe-evaly una default-srcde *), por lo que probablemente no esté agregando demasiado valor, para ser honesto.

Barry Pollard
fuente
5
Esta es una solución insegura: el verificador de CSP de Google le da a esta línea múltiples fallas severas. (Desafortunadamente, implementar un buen CSP no es trivial y debe personalizarse por sitio)
Freewalker
7
No estoy de acuerdo con este comentario. Los problemas con el CSP se deben al CSP original. Todo lo que hizo esta respuesta fue tomar eso y agregar el dominio www.google.com a esto en respuesta a la pregunta. ¿Podría haber sugerido ajustar aún más el CSP al mismo tiempo? Posiblemente, pero yo diría que está fuera del alcance de la pregunta. Especialmente porque ya era evidente que el OP no estaba familiarizado con CSP.
Barry Pollard
3
¿Ahora el CSP es "inseguro"? Eso es discutible. Permitir inseguro-en línea e inseguro-eval y una fuente predeterminada de * anula gran parte del propósito de un CSP (de ahí por qué también sugerí eliminarlo), pero debe recordarse que CSP nunca puede aflojar los controles del navegador, por lo que incluso esta política de pérdida es agregando cierto control sobre una página que no tiene CSP, como lo demuestra el hecho de que está bloqueando un script de Google. Así que "inseguro" probablemente no sea un buen término. "Demasiado laxo para que valga la pena" es quizás una mejor manera de expresarlo. Así que sí, este CSP deja mucho que desear, pero agregarle Google no es una "solución insegura".
Barry Pollard
3
Lo justo es que cualquier CSP (que no sea "todo está bien) generalmente sería mejor que ninguno.
Freewalker
14

Con mi proyecto ASP.NET Core Angular ejecutándose en Visual Studio 2019, a veces recibo este mensaje de error en la consola de Firefox:

Política de seguridad del contenido: la configuración de la página bloqueó la carga de un recurso en línea ("default-src").

En Chrome, el mensaje de error es en cambio:

Error al cargar el recurso: el servidor respondió con un estado de 404 ()

En mi caso, no tuvo nada que ver con mi Política de seguridad de contenido, sino que fue simplemente el resultado de un error de TypeScript de mi parte.

Verifique la ventana de salida de su IDE para ver si hay un error de TypeScript, como:

> ERROR in src/app/shared/models/person.model.ts(8,20): error TS2304: Cannot find name 'bool'.
>
> i 「wdm」: Failed to compile.

Nota: Dado que esta pregunta es el primer resultado en Google para este mensaje de error.

Daniel Congrove
fuente
11

Tuve un tipo de error similar. Primero, intenté agregar las metaetiquetas en el código, pero no funcionó.

Descubrí que en el servidor web nginx puede tener una configuración de seguridad que puede bloquear la ejecución del código externo:

# Security directives
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'  https://ajax.googleapis.com  https://ssl.google-analytics.com https://assets.zendesk.com https://connect.facebook.net; img-src 'self' https://ssl.google-analytics.com https://s-static.ak.facebook.com https://assets.zendesk.com; style-src 'self' 'unsafe-inline' https://assets.zendesk.com; font-src 'self' https://fonts.gstatic.com  https://themes.googleusercontent.com; frame-src https://player.vimeo.com https://assets.zendesk.com https://www.facebook.com https://s-static.ak.facebook.com https://tautt.zendesk.com; object-src 'none'";

Consulte la Política de seguridad de contenido. Es posible que deba agregar la referencia de la fuente.

aCustica
fuente
3
Tenga en cuenta que esto no es seguro: esta política de seguridad de contenido obtiene fallas de alta gravedad del evaluador de CSP de Google .
Freewalker
1

Me las arreglé para permitir todos mis sitios requeridos con este encabezado:

header("Content-Security-Policy: default-src *; style-src 'self' 'unsafe-inline'; font-src 'self' data:; script-src 'self' 'unsafe-inline' 'unsafe-eval' stackexchange.com");                    
rubo77
fuente
0

Lo solucioné actualizando tanto la versión de Angular que estaba usando (desde v8 -> v9) como la versión de TypeScript (desde 3.5.3 -> más reciente).

Entusiasta de Scala
fuente
1
Cual es la explicacion
Peter Mortensen
-11

Puede desactivarlos en su navegador.

Firefox

Escriba about:configen la barra de direcciones de Firefox y búsquelo security.csp.enabley configúrelo en false.

Cromo

Puede instalar la extensión llamada Disable Content-Security-Policypara deshabilitar CSP.

sendon1982
fuente
79
NUNCA hagas esto, aparte de la depuración temporal. Esta es una característica de seguridad crítica de su navegador.
hackel
4
Esto solo lo solucionará localmente y, además, deja su navegador mucho más vulnerable.
Neil Chowdhury
3
¿Es este un "consejo" para probar / depurar? Si es así, debe mencionarse en respuesta para evitar la propagación de vulnerabilidades peligrosas en una comunidad de personas inconscientes. Por cierto, como dijo @NeilChowdhury, esto lo solucionará en su sistema, ¿qué pasa con los visitantes reales del sitio web?
Viernes
12
solución temporal pero útil para la depuración (más uno)
NarendraR
4
@hackel YO HARÉ esto. VOY A.
ア レ ッ ク ス