2012-09-02 2 views
3

내 응용 프로그램은 HTML 컨텐트를 문자열로 동적으로 작성하고 완료되면 내용이 DOM에 첨부됩니다. 하지만 WinJS에서는 문자열을 DOM에 첨부하려고하면 예외가 발생합니다. 이러한 예외를 해결하기 위해 Internet Explorer뿐만 아니라 WinJS에서도 전역 적으로 정의 된 toStaticHTML을 통해 HTML을 실행하여 HTML을 삭제해야합니다. 내가 가지고있는 문제는 data- * html5 속성을 꽤 많이 사용한다는 것입니다. 일단 StaticHTML을 통해 이들을 제거하면 스트립됩니다. toStaticHTML이 data- * 속성을 제거하는 이유는 무엇입니까? 실제 보안 문제는 무엇입니까?toStaticHTML이 data- * 속성을 제거하는 이유

jQuery를 사용하고 jQuery 코드를 수정할 수 없으므로 MSP.execUnsafeLocalFunction에서 DOM 삽입을 감쌀 수 없습니다.

var html = "<ul><li data-role='list-node'>My list node</li></ul>"; 
$('#container').html(toStaticHTML(html)); 

는 생산 :

<ul> 
    <li>My list node</li> 
</ul> 
+0

'$ ('# 용기') HTML (HTML) '작동하지 않는 이유는 무엇입니까? 'html'은 어쨌든 문자열입니다 ... – Ridcully

답변

7

이 (때문에 보호 컨텍스트 내에서 실행하는 데 안전하지 않은 코드를 허용 가능성이 문서에 HTML의 임의의 비트를 삽입하고 대한 보안 우려 귀하의 응용 프로그램입니다, WinRT 및 사용자 문서에 대한 전체 액세스 가능).

toStaticHtml

은이 화이트리스트보다는 블랙리스트 그래서 HTML/웹 패턴을 진화의 경우 '보안'을 유지하기위한 것입니다.
  • (아래 참조) msExecUnsafeLocalFunction jQuery에 대한 호출을 래핑 :

    는 나는 다음과 같은 옵션을 보려면 여기가 당신의 도전을 감안할 때. 이것은 호출의 수명을 의미하며 모든 Dom 삽입은 문제가되지 않습니다. 이 코드는 jquery를 변경하지 않고 코드 만 변경할 수 있습니다.
  • Jquery에서 사용중인 DOM 호출을 모두 호출하여 다시 작성하십시오. msExecUnsafeLocalFunction
  • 응용 프로그램의 보안 컨텍스트를 로컬 컨텍스트가 아닌 웹 컨텍스트로 변경하십시오. 물론 WinRT에 직접 액세스 할 수 없게됩니다. 다른 메커니즘 (I 프레임 또는 유사한 프레임 간 메시징)을 통해 작동해야합니다.
  • WinJS.Binding.Template을 사용하면 Jquery가 아닌 콘텐츠를 렌더링 할 수 있습니다. 이
  • 는 안전 노드를 삽입 한 후
  • setAttribute와 속성을 설정 자신의 노드 클론 업체를 쓰기보다는 HTML을 stringifying보다 노드를 복제합니다. msExecUnsafeLocalFunction의

사용 예제 :.

MSApp.execUnsafeLocalFunction(function() { 
    $('#container').html(html); 
}); 
+0

MSApp.execUnsafeLocalFunction에서 호출을 래핑하려고했지만 여전히 예외가 발생했다. 나는 이것을 월요일에 확인해야 할 것이다. –

+0

JQuery 작업이 "지연됨"인 경우 실제로 설정되기 전에 실행이 브라우저에 전달되면 브라우저가이를 설명 할 수 있습니다. 코드를 보면 그럴 수 없습니다. 다른 옵션을 추가하도록 업데이트되었습니다. –

+0

사실 jQuery는이 경우 Deferred를 사용해야합니다. 사실 MS Promise를 사용하는 경우에만 오류가 발생하는 경우가 있는데, 그렇지 않으면 오류가 발생하지 않고 경고가 표시됩니다. 나는 내일 더 많은 발견으로 업데이트 할 것이다. –

3

data-role -attribute가 여기에 나열되지 않습니다 http://msdn.microsoft.com/en-us/library/windows/apps/hh465388.aspx

그것은 알 수없는 속성의 제거됩니다. 워드 프로세서 data에 대한 언급으로

+0

다른 data- *가 아닌데도 모든 data-win- * 속성이 허용되는 이유는 여전히 볼 수 없습니다. 나머지 보안 문제는 무엇입니까? –

+1

글쎄, 내 생각에 * 표준 정보 : 여기에 적용되는 표준이 없습니다. * @ http://msdn.microsoft.com/en-us/library/windows/apps/hh466094.aspx 단서를 제공합니다. – KooiInc

+0

@Konstantin Dinev : "all"이 아닌 data-win - * - 허용 된 속성 만 표시됩니다. –

관련 문제