17

Github에서이 가지고있는 Content Security Policy 다음콘텐츠 보안 확장을위한 정책 및 북마크

콘텐츠 보안-정책 : 기본-SRC *; script-src assets-cdn.github.com www.google-analytics.com collector-cdn.github.com; object-src assets-cdn.github.com; style-src 'self' 'unsafe-inline' 'unsafe-eval'assets-cdn.github.com; img-src '자체'데이터 : assets-cdn.github.com identicons.github.com www.google-analytics.com collector.githubapp.com * .githubusercontent.com * .gravatar.com * .wp.com ; media-src 'none'; frame-src 'self'render.githubusercontent.com www.youtube.com player.vimeo.com checkout.paypal.com; font-src assets-cdn.github.com; 는 연결-SRC '자기'ghconduit.com:25035 live.github.com uploads.github.com s3.amazonaws.com

가 우리는/클립 서비스의 브라우저 확장 기능과 웹 콘텐츠를 검색 할 수 있습니다

는 에버 노트를 좋아 또는 포켓.

이 Github 정책에서 Pocket 또는 Evernote에 대한 참조가 표시되지 않습니다. 누군가가 Ghost에서 콘텐츠를 검색 할 수있는 이유를 설명 할 수 있습니까? CSP error)

CSP 정책으로 클리퍼와 같은 북마크릿 앱이나 브라우저 확장 프로그램이로드되지 않도록 할 수 있습니까? 그렇다면 Pocket이 모든 콘텐츠에서 확장 기능을 수행하는 방법은 무엇입니까?

우리는 우리의 북마크/확장이 문제를 가지고 나는 그들이 포켓 확장으로 원활 일하고 싶습니다하지만 난 정말 어디서부터 시작 ...


편집 감사

모른다 : 사람들이 코멘트에 코드를 요구하고, 우리의 북마크는이 자바 스크립트와 함께로드됩니다 : 나는 CSP를 가지고 중간 페이지에이 북마크를 시작하려고하면

javascript: (function() { 
    function loadScript(a, b) { 
     var c = document.createElement('script'); 
     c.type = 'text/javascript'; 
     c.src = a; 
     var d = document.getElementsByTagName('head')[0], 
      done = false; 
     c.onload = c.onreadystatechange = function() { 
      if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) { 
       done = true; 
       b() 
      } 
     }; 
     d.appendChild(c) 
    } 
    loadScript('http://localhostsss.com:9000/assets/js/backbone/views/clipping/clippinglocal.js', function() { 
     s.clipping.initClipping() 
    }) 
})() 

, 내가 얻을 다음 오류. "스크립트 src에 '안전하지 않은-평가', '안전하지 않은 인라인'에 대한 : https : //로

는 다음과 같은 콘텐츠 보안 정책 지침을 위반 스크립트를 'http://localhostssss.com:9000/assets/js/backbone/views/clipping/clippinglocal.js' 를로드하지 않았다. akamaihd.net에 http : //
.baidu.com https://bitly.com https : //로 .cloudfront.net https : //로 .facebook.com https : //로 .facebook.net https://getpocket.com https : //로 .github .com https : // .googleapis.com,210 https://ssl.google-analytics.comhttps://app.greenhouse.io https : //로 .medium.com https://myspace.com https : //로 .pinterest.com https://www.readability.comhttps://thinkery.mehttps://this.cm https : //로 .twitter.com https://use.typekit.net은 https : //*.instapaper.com '자기 ''.

CSP 정책이있는 Medium 또는 Github과 같은 웹 사이트에서 북마크릿을로드하는 방법을 누군가에게 알려줄 수 있습니까?

브라우저 확장 기능에 대해 아직 이야기 할 수 없습니다. 아직 작동하지 않아서 사람이 여기 atm이 아니기 때문입니다. 난 그냥 우리가 동일한 문제가 있다는 것을 알고 있고 브라우저 확장은 기본적으로 브라우저 확장 쉘에 맞게 조정 된 것을 제외하고는 북마크릿과 동일한 코드입니다. 북마크 릿 케이스에 대해서만 대답 할 수 있다면 답장을 수락하겠습니다. 그러나 브라우저 확장에 대한 힌트도 좋을 것입니다. :)

+0

좀 더 자세한 내용을 문의 할 수 있습니까? github 앱이나 웹 페이지에 대한 질문입니까? evernote의 문제점은 evernote 응용 프로그램 또는 웹 페이지의 문제점입니까? github 앱에 문제가있어 앱이 evernote 웹 사이트와 통신 할 수있게하려면 manifest.json에 권한을 추가해야합니다. –

+0

@ petewil-G 우리는 Evernote/Pocket과 같은 깎기 도구를 개발하고 있으며 CSP 정책 (예 : Github 또는 Medium)으로 사이트에서 콘텐츠를 클립 할 수 있어야합니다. 북마크 렛과 브라우저 확장이 있습니다 (manifest.json은 북마크릿에 적용되지 않습니다) –

+0

Google Apps와 관련이없는 google-chrome-app 태그는 제거하십시오. –

답변

17

북마크릿 앱이나 브라우저 확장 프로그램을 차단할 수 있습니까? 로드 할 클리퍼?

매우 간단합니다 : 확장 또는 북마크릿이 CSP를 위반하는 경우 차단됩니다.

따라서 CSP가 모든 인라인 스크립트를 차단하면 북마크릿이 작동하지 않습니다. Github은 media-src으로 이것을 수행합니다. 단순히 "media-src"지시자가 기본적으로 인라인 스크립트를 차단하기 때문입니다. 따라서 Github에서 북마크릿을 사용할 수 없습니다.

은 (사이드 참고로, 모든 브라우저가이 방식으로 작동하더라도,이 CSP에서 북마클릿이해야 실제로 면제. 표준 현상이 발생 말씀 아니지만, 불행히도 브라우저는 허용 귀찮게 없다.)

확장 기능이 작동하거나 작동하지 않는 경우 확장 기능 자체가 작동하는 방식에 따라 다릅니다. 확장 프로그램은 CSP에 의해 직접 차단 될 수 없지만 확장 프로그램이 CSP를 위반하는 프로그램을 시도하면 프로그램이 실패 할 수 있습니다. 따라서 Github에서 확장 프로그램이 페이지의 DOM에 기본 스크립트를 추가하려고하거나 승인되지 않은 위치에서 페이지의 DOM에 외부 스크립트를 추가하려고하거나 CSP에 설명 된 다른 제한된 작업을 수행하면 실패 할 수 있습니다 .

그래서 Evernote 확장 프로그램의 어떤 부분이 CSP 오류의 원인이고 Pocket은 오류를 일으키지 않고 비슷한 작업을 수행합니까? 나는 모른다. 이는 모두 해당 애플리케이션의 작성 방법에 대한 구체적인 세부 사항에 달려 있습니다. 대부분의 경우 코드를보고 알아내는 것이 매우 간단합니다. 내가 아는 한 모든 Chrome 확장 프로그램은 자바 스크립트로 작성되고 zip 파일로 패키징됩니다 (파일 확장자 만 다름). 나는 Firefox 부가 기능에 대해서도 마찬가지라고 생각한다.

+1

귀하의 통찰력에 감사드립니다.북마크릿이 CSP에서 제외되어야하고 브라우저가이를 구현하지 않았다는 것을 어떻게 알 수 있습니까? 거기에 브라우저에서 열리는 문제가 있습니까? –

+0

확장 기능은 실제로 전체 앱 코드를 포함하지 않지만 원격 URL에서 코드를로드하려고 시도하기 때문에 작동하지 않는다고 생각하십니까? 즉, 우리는 아마도 모든 확장 코드를 원격으로로드하는 대신 동일한 zip 파일에 패키지해야 할 필요가 있음을 의미합니다. –

+0

이 문제를 발견했습니다. http://code.google.com/p/chromium/issues/detail?id=233903 –