development

다음 콘텐츠 보안 정책 지침을 위반하여 스크립트로드를 거부했습니다.

big-blog 2020. 12. 4. 19:46
반응형

다음 콘텐츠 보안 정책 지침을 위반하여 스크립트로드를 거부했습니다.


5.0.0 이상의 Android 시스템이 설치된 기기에 앱을 배포하려고 할 때 다음과 같은 오류 메시지가 계속 표시됩니다.

07-03 18 : 39 : 21.621 : D / SystemWebChromeClient (9132) : file : ///android_asset/www/index.html : 0 행 : 다음 콘텐츠를 위반하여 ' http : // xxxxx ' 스크립트로드 거부 보안 정책 지시문 : "script-src 'self' 'unsafe-eval' 'unsafe-inline'". 07-03 18 : 39 : 21.621 : I / chromium (9132) : [INFO : CONSOLE (0)] " 다음 콘텐츠 보안 정책 지침을 위반하기 때문에 ' http : // xxx ' 스크립트로드 거부 :"script- src 'self' 'unsafe-eval' 'unsafe-inline' ".

그러나 4.4.x의 Android 시스템이 설치된 모바일 장치에 배포 한 경우 보안 정책이 기본 정책으로 작동합니다.

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

그런 다음 아마도 다음과 같이 변경해야한다고 생각했습니다.

<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self'; style-src 'self' 'unsafe-inline'; media-src *">

기본적으로 두 옵션 모두 저에게 적합하지 않습니다. 아무도이 문제를 해결하는 방법에 대한 아이디어가 있습니까?


아래의 메타 태그를 다음으로 바꾸십시오.

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

또는 당신이 무엇을뿐만 아니라, 당신은 추가해야 http://*모두 style-srcscript-src'자기'이후에 추가 위에서 본 바와 같이

서버에 Content-Security-Policy헤더 가 포함되어 있으면 헤더가 메타보다 우선합니다.


MagngooSasa가 제공 한 자동 응답이 트릭을 수행했지만 그 답을 이해하려는 다른 사람을 위해 다음과 같은 몇 가지 세부 정보가 있습니다.

Visual Studio로 Cordova 앱을 개발할 때 원격 자바 스크립트 파일 [여기 http://Guess.What.com/MyScript.js에 있음] 가져 오기를 시도했지만 제목에 오류가 언급되었습니다.

다음은 프로젝트의 index.html 파일에있는 Meta 태그입니다.

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

다음은 원격 스크립트 가져 오기를 허용하는 CORRECTED 메타 태그입니다.

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *;**script-src 'self' http://onlineerp.solution.quebec 'unsafe-inline' 'unsafe-eval';** ">

더 이상 오류가 없습니다!


로 해결

script-src 'self' http://xxxx 'unsafe-inline' 'unsafe-eval'; 

우리는 이것을 사용했습니다.

<meta http-equiv="Content-Security-Policy" content="default-src gap://ready file://* *; style-src 'self' http://* https://* 'unsafe-inline'; script-src 'self' http://* https://* 'unsafe-inline' 'unsafe-eval'">

이 추가에 대해 좀 더 자세히 설명하려면

script-src 'self' http://somedomain 'unsafe-inline' 'unsafe-eval';    

이렇게 메타 태그에

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; script-src 'self' https://somedomain.com/ 'unsafe-inline' 'unsafe-eval';  media-src *">

오류 수정


완전한 설명을 원하는 사람이라면 콘텐츠 보안 정책 ( https://www.html5rocks.com/en/tutorials/security/content-security-policy/)을 살펴 보시기 바랍니다 .

에서 "코드 https://mybank.com은 단지에 액세스 할 수 있어야한다 https://mybank.com 의 데이터를, 그리고 https://evil.example.com 확실히 액세스를 허용해서는 안됩니다. 각각의 기원이 분리 유지 나머지 웹 "

XSS 공격은 브라우저가 다른 웹 사이트에서 다운로드 한 코드와 앱의 코드를 구분하지 못하기 때문에 발생합니다. 따라서 Content-Security-PolicyHTTP 헤더를 사용하여 콘텐츠를 안전하게 다운로드 할 수있는 것으로 간주되는 콘텐츠 원본을 화이트리스트에 추가해야합니다 .

이 정책은 일련의 정책 지시문을 사용하여 설명되며 각 지시문은 특정 리소스 유형 또는 정책 영역에 대한 정책을 설명합니다. 정책에는 자체 정책이 없을 때 다른 리소스 유형에 대한 대비책 인 default-src 정책 지시문이 포함되어야합니다.

따라서 태그를 다음과 같이 수정하면

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *;**script-src 'self' http://onlineerp.solution.quebec 'unsafe-inline' 'unsafe-eval';** ">

당신은 Javacsript 코드 (실행 권한을 부여하는 것을 말하는 script-src기원에서)를 'self', http://onlineerp.solution.quebec, 'unsafe-inline', 'unsafe-eval'.

처음 두 가지는 귀하의 사용 사례에 대해 완전히 유효하다고 생각하지만 다른 사례에 대해서는 약간 확신이 없습니다. 'unsafe-line'그리고 'unsafe-eval'당신이 그들에 대한 매우 구체적인 필요가 없다면 당신이 그들을 사용하지 않아야하므로 보안 문제가 포즈 :

"eval 및 text-to-JavaScript 형제가 응용 프로그램에 완전히 필수적인 경우 script-src 지시문에 허용 된 소스로 'unsafe-eval'을 추가하여 활성화 할 수 있습니다. 그러나 다시 말하지 마십시오. 문자열을 실행할 수있는 능력은 공격자가 귀하의 사이트에서 승인되지 않은 코드를 실행하는 것을 훨씬 더 어렵게 만듭니다. " (Mike West, Google)


이 정책을 무시하기 위해 메타 태그를 추가하는 것은 웹 서버가 Content-Security-Policy응답에 헤더를 삽입하고 있기 때문에 도움이되지 않았습니다 .

우리의 경우 Ngnix를 tomcat9 Java 기반 애플리케이션의 웹 서버로 사용하고 있습니다. 웹 서버에서 허용하지 않도록 브라우저를 지정 inline scripts하므로 임시 테스트를 위해 Content-Security-Policy주석 으로 해제 했습니다.

ngnix에서 끄는 방법?

  • 기본적으로 ngnix ssl.conf에는 응답에 헤더가 추가됩니다.

    #> grep 'Content-Security' -ir /etc/nginx/global/ssl.conf add_header Content-Security-Policy "default-src 'none'; frame-ancestors 'none'; script-src 'self'; img-src 'self'; style-src 'self'; base-uri 'self'; form-action 'self';";

  • 이 줄에 주석을 달고 ngnix를 다시 시작하면 응답에 헤더를 추가하지 않아야합니다.

보안 또는 프로덕션에 대해 우려되는 경우이 단계를 따르지 말고 테스트 목적으로 만이 단계를 사용하고 계속 진행하십시오.

참고 URL : https://stackoverflow.com/questions/31211359/refused-to-load-the-script-because-it-violates-the-following-content-security-po

반응형