Chrome에서 콘텐츠 보안 정책을 완화하는 방법은 무엇입니까? http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.spotilocal.com:* https://*.akamaihd.net

최근에 Facebook과 같은 일부 웹 사이트는 CSP ( Content Security Policy )를 사용하여 “신뢰할 수없는 소스”에서 스크립트로드를 제한합니다. 예를 들어, Facebook HTML 컨텐츠 (예 : https://www.facebook.com )를 요청할 때 Facebook의 HTTP 응답에는 다음 응답 헤더가 포함됩니다.

x-webkit-csp:default-src *;script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net;style-src * 'unsafe-inline';connect-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.spotilocal.com:* https://*.akamaihd.net ws://*.facebook.com:* http://*.akamaihd.net;

이는 신뢰할 수없는 소스에서 Javascript 라이브러리를로드하고 실행해야하는 일부 책갈피에 영향을 미칩니다.

예를 들어 Facebook 페이지 에서 Show Anchors 북마크릿 을 실행하려고 할 때 신뢰할 수없는 소스에서 jQuery를로드하려고하면이 북마크릿의 실행이 실패합니다. Chrome 개발자 콘솔에는 다음과 같이 표시됩니다.

Refused to load the script 'http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js' because it violates the following Content Security Policy directive: "script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net".

이 주제에 대한 Chrome 설명서 페이지를 찾았지만 Chrome 확장 프로그램 에만 적용됩니다 .

내가 할 수있는 솔루션을 찾고 있습니다.

  • CSP를 한 번 비활성화
  • 신뢰할 수있는 출처를 영구적으로 허용합니다.


답변

Chrome 앱에서 승인 한 방법

템플릿 라이브러리 사용

미리 컴파일 된 템플릿을 제공하는 라이브러리를 사용하면 모든 준비가 완료됩니다. 사전 컴파일을 제공하지 않는 라이브러리를 계속 사용할 수 있지만 일부 작업이 필요하며 제한 사항이 있습니다.

‘평가’할 내용을 격리하려면 샌드 박싱을 사용해야합니다. 샌드 박싱은 지정한 내용에 대해 CSP를 높입니다.

샌드 박스 로컬 컨텐츠

샌드 박스를 사용하면 지정된 페이지를 샌드 박스 된 고유 한 원본으로 제공 할 수 있습니다. 이 페이지는 콘텐츠 보안 정책에서 제외됩니다. 샌드 박스 페이지는 iframe, 인라인 스크립팅 및 eval ()을 사용할 수 있습니다 (마지막 두 페이지는 방지됩니다). ‘안전하지 않은 인라인’과 ‘안전하지 않은 eval’을 수정합니다.

  • 샌드 박스에서 인라인 스크립트 사용
  • 매니페스트에 샌드 박스 포함

원격 리소스에 액세스

XMLHttpRequest를 통해 원격 리소스를 가져 와서 blob :, data : 또는 filesystem : URL을 통해 제공 할 수 있습니다. 이것은 jQuery 페치 문제를 해결해야합니다.

매니페스트 요구 사항

교차 출처를 수행하려면 XMLHttpRequests원격 URL 호스트에 대한 권한을 추가해야합니다.

교차 출처 XMLHttpRequest

원격 URL을 앱으로 가져 와서 그 내용을 blob:URL로 제공합니다.


나는 당신이 이것들 중 어느 것도 할 수 있다고 생각하지 않습니다. unsafe-evalunsafe-inline응답 헤더 를 수정하려면 스크립트 소유자 만 코드를 수정하거나 공개 도메인에있는 경우 코드를 수정할 수 있습니다. 이 모든 것은 아마도 일회성 수정일 것입니다.


해킹

안전하지 않은

http://wiki.greasespot.net/UnsafeWindow

콘텐츠 스크립트 삽입

http://wiki.greasespot.net/Content_Script_Injection


그러나 해킹은 보안 허점을 가장 먼저 발생시키는 것으로 알려져 있기 때문에 단점이 있습니다.


답변

chrome://settings/content주소 탭에 입력하여 직접 액세스 할 수있는 컨텐츠 탭에서 이러한 설정을 편집 할 수 있습니다 . 특정 콘텐츠 유형에서 특정 도메인을 허용 목록에 추가 할 수 있습니다.