다음 콘텐츠 보안 정책 지침을 위반하여 스크립트로드를 거부했습니다.
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-src
와 script-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-Policy
HTTP 헤더를 사용하여 콘텐츠를 안전하게 다운로드 할 수있는 것으로 간주되는 콘텐츠 원본을 화이트리스트에 추가해야합니다 .
이 정책은 일련의 정책 지시문을 사용하여 설명되며 각 지시문은 특정 리소스 유형 또는 정책 영역에 대한 정책을 설명합니다. 정책에는 자체 정책이 없을 때 다른 리소스 유형에 대한 대비책 인 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를 다시 시작하면 응답에 헤더를 추가하지 않아야합니다.
보안 또는 프로덕션에 대해 우려되는 경우이 단계를 따르지 말고 테스트 목적으로 만이 단계를 사용하고 계속 진행하십시오.
'development' 카테고리의 다른 글
Angular.js를 통한 세션 유지 (0) | 2020.12.05 |
---|---|
사전에 전달 된 모델 항목의 유형은 ..이지만이 사전에는 유형의 모델 항목이 필요합니다. (0) | 2020.12.05 |
React Stateless 구성 요소의 이벤트 처리기 (0) | 2020.12.04 |
Visual Studio에서 지정된 폴더 또는 파일 형식으로 검색을 제한 하시겠습니까? (0) | 2020.12.04 |
Inno Setup Installer를 실행할 때 PATH 환경 변수를 어떻게 수정합니까? (0) | 2020.12.04 |