2017-11-09 33 views
0

나는 다음과 같은 메타 헤더가 보안 웹 사이트에 대한 접근성 솔루션을 구현하고 인덱스 페이지에 XSS 메타 태그 존재가 될 때마다 스크립트를로드 할 때 :문제로

<meta http-equiv="Content-Security-Policy" content="default-src *; child-src 'none'; object-src 'none';img-src 'self' data:;style-src 'self' 'unsafe-inline'"> 

도 담당하는 스크립트 태그가 내 솔루션 코드의 주입 (자바 스크립트로 작성) 및 다음과 같은 기능이 포함되어

fix.ReadXml = function() { 

$.getScript(this.path, function() { 

    // Some callback code... 
}); }; 

이 경로는 내가 보장 할 수 있음을 올바르게 설정되고있다. 이것은 스크립트 실행 논리의 첫 번째 아약스 호출이며 호출되는 스크립트 파일이로드되지만 콜백 함수가 트리거되지 않고 실행 체인이 여기에서 중단되며 크롬 콘솔에는 오류 코드가 전혀 없습니다.

개발자가 XSS 메타 태그를 제거하면 스크립트 실행이 올바르게 진행되고 솔루션이 정상적으로로드됩니다. 그럼, 왜 이런 일이 일어날 지 설명해주십시오. 안타깝게도 메타 태그는 웹 사이트 보안 정책의 일부이며 제거 할 수 없습니다. 메타 태그가있을 때마다 콜백을 트리거하기 위해 코드에 추가해야 할 것이 있습니까?

미리 감사드립니다.

답변

0

Content-security-policy가로드되면 인라인 scirpt 및 일부 javascript 기능이 비활성화됩니다. 브라우저 개발자 콘솔이 문제의 원인을 알려줍니다. 내 생각 엔 외부 도메인 (현재 메타 정책은 동일한 도메인 만 허용) 또는 getscript가 내부적으로 eval을 사용하고 (CSP는 eval을 사용 중지합니다) 스크립트를로드하는 것입니다. 쉬운 수정이 없습니다. 정책을 변경하거나 (헤더로 덮어 쓰기) 다른 방법으로해야합니다.