콘텐츠 보안 정책 : 페이지 설정이 리소스로드를 차단했습니다.


104

페이지로드 시 CAPTCHA 를 사용 하고 있지만 보안상의 이유로 차단됩니다.

이 문제에 직면하고 있습니다.

    콘텐츠 보안 정책 : 페이지 설정으로 인해로드가 차단되었습니다.
    자원의
    http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit
    ( "script-src http://test.com:8080 'unsafe-inline' 'unsafe-eval'").

다음 JavaScript 및 메타 태그를 사용했습니다.

<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>

내가 당신이라면 자바 스크립트가 아닌 서버 측 코드로 시도해 볼 것입니다. JS는 CORS 및 이와 유사한 것들에 꽤 좋지 않습니다. Google에는 이에 대한 옵션이 있습니다.
Gogol

javascript질문이 jQuery와 관련이 없기 때문에이 질문에 태그를 추가했습니다 . 모든 JavaScript에 영향을줍니다. 사실, jQuery태그를 모두 제거하면 질문이 더 유용 할 수 있지만 그렇게 할 수있는 것은 아닙니다.
Manngo

2
이제 삭제 된 답변 이 맞습니다. "콘텐츠 보안 정책 : 페이지의 설정으로 인해 리소스로드가 차단 되었습니다 "의 한 가지 이유 는 브라우저에서 JavaScript가 활성화 또는 차단 (예 : NoScript에 의해 ) 되지 않았기 때문 입니다. 이 경우 오류 출력의 일부는 "알 수없는 지시문 'noscript-marker'를 처리 할 수 ​​없습니다." 가 될 수 있습니다 .
Peter Mortensen

about : config 사용에 대한 다른 제안에 대해서는 언급 할 수 없으므로 여기에 추가 할 것 같습니다. about : config로 이동하고 security.csp.enable을 false로 설정하는 것이 좋습니다. 다른 사람들은 이것이 끔찍한 생각이라고 말했습니다. 나는 이것이 내가 사용하기로 결정한 솔루션이라고 말하고 싶습니다. 매우 많은 사이트가 Firefox에서 완전히 작동을 멈췄으며 이러한 오류가 도처에 있습니다. Chrome은 여전히이를로드합니다. 그 이유에 대해 더 많이 알지 못해도 security.csp.enable을 false로 설정하면 해당 사이트가 Firefox를 사용하여 다시로드 될 수 있으며 저는 Chrome보다 Firefox를 선호합니다. 경우]
ELIT

답변:


85

자신의 사이트 (자신)에서만 스크립트를로드 할 수 있다고 말씀하셨습니다. 그런 다음 다른 사이트 ( www.google.com ) 에서 스크립트를로드하려고했지만 이를 제한했기 때문에 로드 할 수 없습니다. 이것이 콘텐츠 보안 정책 (CSP)의 요점입니다 .

첫 번째 줄을 다음과 같이 변경할 수 있습니다.

<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">

또는 CSP에 대해 자세히 알아볼 때까지 해당 줄을 완전히 제거하는 것이 좋습니다. 현재 CSP는 어쨌든 상당히 느슨하므로 unsafe-inline( unsafe-eval및 a default-srcof 허용 *) 솔직히 말하면 너무 많은 가치를 추가하지 않을 것입니다.


5
이것은 안전하지 않은 해결 방법입니다. Google의 CSP 검사기 는이 줄에 여러 개의 심각한 오류를 제공합니다. (안타깝게도 좋은 CSP를 구현하는 것은 사소한 일이 아니며 사이트별로 사용자 지정해야합니다.)
Freewalker

8
이 의견에 문제가 있습니다. CSP의 문제는 원래 CSP 때문입니다. 이 대답은 모두 그것을 취하고 질문에 대한 대답으로 www.google.com 도메인을 여기에 추가하는 것입니다. 동시에 CSP를 더 강화할 것을 제안 할 수 있습니까? 그럴 수도 있겠지만 나는 그것이 질문의 범위를 벗어났다고 말할 것입니다. 특히 OP가 CSP에 익숙하지 않은 것이 이미 분명했기 때문입니다.
Barry Pollard

3
이제 CSP가 "안전하지 않은"것입니까? 그것은 논쟁의 여지가 있습니다. 안전하지 않은 인라인 및 안전 - 평가 및 많은 (따라서 왜 나는 또한 그것을 제거하는 제안)은 CSP의 목적 * 패배의 기본 소스를 허용하지만, CSP가 수 있음을 기억해야한다 결코 그렇게조차 잃게 정책은 브라우저 컨트롤을 풀어 없다 CSP가없는 페이지에 대한 일부 제어 추가-Google 스크립트를 차단하고 있다는 사실에서 알 수 있습니다. 따라서 "안전하지 않음"은 아마도 좋은 용어가 아닐 것입니다. "너무 느슨해서 보람이 없다"는 것이 더 나은 표현 방법 일 수 있습니다. 그렇습니다.이 CSP는 많이 필요하지만 여기에 Google을 추가하는 것은 "안전하지 않은 해결 방법"이 아닙니다.
Barry Pollard

3
모든 CSP ( "모든 것이 괜찮은 것 제외)가 일반적으로없는 것보다 낫다는 것이 공정한 점입니다."
Freewalker

그것에 약간의 문제가 있습니다 chrome://global/content/elements/panel.js. 모든 페이지에서 디버그를 비활성화하는 (Firefox) 에서 오류가 발생 합니다
AaA

14

ASP.NET Core Angular 프로젝트가 Visual Studio 2019에서 실행 중일 때 가끔 Firefox 콘솔에 다음 오류 메시지가 표시됩니다.

콘텐츠 보안 정책 : 페이지의 설정이 인라인 ( "default-src")에서 리소스로드를 차단했습니다.

Chrome에서 오류 메시지는 다음과 같습니다.

리소스로드 실패 : 서버가 404 () 상태로 응답했습니다.

제 경우에는 콘텐츠 보안 정책과 아무 관련이 없었지만 대신 단순히 TypeScript 오류의 결과였습니다.

IDE 출력 창에서 다음과 같은 TypeScript 오류를 확인하십시오.

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

참고 :이 질문은이 오류 메시지에 대한 Google의 첫 번째 결과이기 때문입니다.


11

비슷한 오류 유형이 있습니다. 먼저 코드에 메타 태그를 추가하려고했지만 작동하지 않았습니다.

nginx 웹 서버에서 외부 코드 실행을 차단할 수있는 보안 설정이있을 수 있음을 발견했습니다.

# 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'";

Content-Security-Policy를 확인하십시오. 소스 참조를 추가해야 할 수도 있습니다.


4
이것은 안전하지 않습니다.이 Content-SecurityPolicy는 Google의 CSP Evaluator 에서 높은 심각도 오류를 가져옵니다 .
Freewalker

1

이 헤더로 모든 필수 사이트를 허용했습니다.

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

0

내가 사용하고 있던 Angular 버전 (v8-> v9)과 TypeScript 버전 (3.5.3-> 최신 버전)을 모두 업그레이드하여이 문제를 해결했습니다.


1
설명은 무엇입니까?
Peter Mortensen

-7

브라우저에서 비활성화 할 수 있습니다.

Firefox

입력 about:config파이어 폭스의 주소 표시 줄에 찾아 security.csp.enable와로 설정false .

크롬

Disable Content-Security-PolicyCSP를 비활성화하기 위해 호출 된 확장을 설치할 수 있습니다 .


83
임시 디버깅을 제외하고는 절대 이렇게하지 마십시오. 이것은 브라우저의 중요한 보안 기능입니다.
hackel jul.

4
이것은 로컬에서만 수정되며 브라우저가 훨씬 더 취약 해집니다.
Neil Chowdhury

3
테스트 / 디버깅을위한 "조언"입니까? 그렇다면 알지 못하는 사람들의 커뮤니티에 위험한 취약점이 퍼지는 것을 피하기 위해 대답으로 언급해야합니다. 그건 그렇고, @NeilChowdhury가 말했듯이 이것은 시스템에서 문제를 해결할 것입니다. 실제 웹 사이트 방문자는 어떻습니까?
Fr0zenFyr

13
임시 방편하지만 도움이 디버깅 (더하기 하나)
NarendraR

5
@hackel 나는 이것을 할 것입니다. 나는 할 것이다.
アレックス
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.