2016-09-08 4 views
2

Google Caja를 구성 할 수있는 사람이 누구인지 알고있어 일부 라이브러리가 제대로 작동하고 살균되지 않습니다. 나는 내 자신의 CAJA 서버와 NodeJS 기반 응용 프로그램을 가지고 있습니다. Google CAJA 사용자 코드로 전달합니다.이 코드는 주로 차트와 그래프와 관련되어 있지만, 모든 라이브러리 함수 (예 : d3js, chart.js)는 CAJA에 의해 차단됩니다. 모든 라이브러리는 Caja를 통해 오류없이 사용자의 문서에 연결되지만 사용자가 라이브러리의 기능 (예 : d3.select("body").append("svg"))을 요청하면 this * is not a function과 같은 오류가 표시됩니다. 누구든지 어떤 방법을 알고 있습니까?Google CAJA를 통해 라이브러리를 전달하는 방법은 무엇입니까?

추신 : 나는 URI 정책에 대해 알고 있지만, 라이브러리가 uriPolicy를 통과 할 때마다 항상 동일한 원본 도메인 이름을 벗어나는 모든 내용을 제어하는 ​​것처럼 보입니다. 아직 Caja가 검사하고 있습니다.

+0

uriPolicy의 완화 속성을 보았습니까? – tapananand

+0

안녕하세요! 예, 불행히도 그것을 찾지 못했습니다. 나는 그것에 대한 어떤 문서도 찾을 수 없었다, 나는 caja 자체의 소스 코드에서 그것을 발견했다. 어떻게 작동하는지에 대한 정보가 있으면 매우 감사 할 것입니다. – kimslava93

답변

1

uriPolicy.mitigate 함수를 사용하여 사전 완화/사전 캐고 드/신뢰할 수있는 라이브러리 버전으로 URL을 반환 할 수 있습니다. 라이브러리 url을 검사 할 수 있으며, 일치하면 premitigated URL을 반환하고 그렇지 않으면 null을 반환합니다. 예 :

var uriPolicy = { 
    mitigate: function(uri) { 
     if(/jquery\.js/.test(uri)) 
      return urlToMyJquery.js; 
     else 
      return null; 
    } 
} 
+0

고맙습니다. 사전 신뢰 목록과 연결되지 않은 항목을 연결하려면 어떻게해야합니까? 예 : D3.js. 내 보관함에서 어떻게 가져올 수 있습니까? – kimslava93

+0

기본적으로 URL은 완화 된 모든 리소스에 반환 할 수 있습니다. 완화되지 않은 앱은 보안 위험에 노출 될 수 있으므로 매우주의해야합니다. – tapananand

관련 문제