0

크롬 확장에 mocha, chai 및 sinon을 사용하여 단위 테스트를하고 있습니다. 내가 방법에서 개체를 스텁하려고 할 때 내가 얻을 :크롬 확장 유닛 테스트에서 시논과 함께 '안전하지 않은 평가'가 throw됩니다.

EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self' blob: filesystem: chrome-extension-resource:". 

at createProxy (js/lib/sinon.js:2488:86) 
at Function.create (js/lib/sinon.js:2549:29) 
at Function.create (js/lib/sinon.js:3337:42) 
at Object.stub (js/lib/sinon.js:3289:32) 
at Context.<anonymous> (js/spec/sf-companion.spec.js:44:19) 
at Test.Runnable.run (js/lib/mocha.js:4529:15) 
at Runner.runTest (js/lib/mocha.js:4974:10) 
at js/lib/mocha.js:5057:12 
at next (js/lib/mocha.js:4899:14) 
at js/lib/mocha.js:4909:7 

test-runner.html을 :

http://pastebin.com/ij5kD2rY

어떤 도움

주시면 감사하겠습니다. 미리 감사드립니다.

+0

'chrome-extension : // hjkmpahjllmdacbcennobnfcagfdaife/test/test-runner.html'는 PC의 파일에 대한 로컬 링크입니다. –

+0

@TomBurris 예, 그렇습니다. 이 URL을 어떻게 허용 할 수 있습니까? 이 패키지를 작성하면 확장 URL이 다른 동일한 URL을 갖게됩니다. – pvnarula

+0

'test-runner.html'의 내용을 복사하여 http://www.pastebin.com 또는 유사한 사이트에 업로드 한 다음이 링크를 여기에 공유하는 것이 좋습니다. –

답변

1

Google은 교차 사이트 스크립팅을 방지하기 위해 Google이 평가 기능을 차단했습니다.

이 곁에

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"

의 manifest.json에이 코드를 추가 해결하기 :

using eval in Chrome extensions, safely에서 here

+0

하지만 확장 기능을 실행중인 경우입니다. 하지만 크롬 확장 : URL 및 확장 리소스를 사용하여 리소스를 단위 테스트하고 있습니다. Chrome 확장을 위해 CSP를 허용하는 방법 : url? – pvnarula

1

을 찾을 수 있습니다 abhilash, 다음과 같은 정책 제한 주어진 :

스크립트를 별도의 JavaScript 파일로 변환해야하고 인라인 이벤트 처리기를 addEventListener으로 변환해야하며 eval()은 사용하지 않도록 설정해야합니다. 이 실행 코드는 확장의 높은 권한 환경에서 모두에 액세스 할 수 있기 때문에 문서에 언급

,

평가는 확장 내부 위험하다.

그러나, 도서관의 다양한 를 샌드 박스 프로젝트에서 이러한 라이브러리를 포함하는 안전 메커니즘으로 도입 된 성능 최적화와 표현의 용이성 등의 새로운 기능 (같은 eval() 및 평가와 같은 구조)를 사용하기 때문에 보안에 대한 타협없이

따라서 샌드 박스를 만들고 사용할 때 매니페스트에 파일을 나열하십시오. 샌드 박스가 매니페스트 확장에 나열되어 있어야합니다 내부한다고 각 파일은 다음과 같습니다 샌드 박스 속성을 추가하여 실행한다 :

{ 
    ..., 
    "sandbox": { 
    "pages": ["sandbox.html"] 
    }, 
    ... 
} 

당신은 샘플 주어진 문서를 통해 갈 수 있으며, 샌드 박스에 대해 완전히 이해하기 .

또한 GitHub - unsafe-eval security error in chrome extension에있는이 스레드는 이미 이것이 고정 된 문제라고 언급 한 경우에도 도움이 될 수 있습니다.

관련 문제