2010-04-09 3 views
7

.Net Framework에서 WPF에 대한 새로운 기능을 제공합니다. 나는 Xaml (순간에 Page 엘리먼트) 파일을 프레임에로드 한 다음 필요에 따라 이름을 통해 컨트롤을 매핑함으로써 인터페이스를 매우 사용자 정의 할 수있는 애플리케이션을 작성하고있다. 아이디어는 피부를 만드는 데 관심이있는 사람들의 공동체를 갖기 위함입니다.하지만 Winamp처럼 많이 쓰고 싶습니다.WPF 스킨 스키닝 보안 문제

Xaml 지식이 부족하여 다운로드 및 사용시 다른 포함 된 Iframe이나 악의적 인 콘텐츠가 포함 된 원격 웹 페이지를 포함 할 수있는 기타 요소가 포함될 수있는 악의적 인 Xaml 페이지를 만들 수 있습니까? ? 나는 이것이 사실 일 수 있다고 생각한다.

이 경우 두 가지 옵션이 있습니다. Xaml 파일을 다운로드하기 전에 요소를 검사하여 이러한 유형의 Xaml 파일을 제거 할 수있는 자동화 된 프로세스가 있거나 다운로드하기 전에 사람이 검토하기가 쉽습니다. 이 모든 과정을 훨씬 쉽게 할 수 있다는 것을 모르는 대안이 있습니까?

답변

3

당신은 단순히 어떤주의 사항이 잠재적 인 우려가있다을 복용하지 않고 XAML을로드하는 경우 :

  1. XAML을 사용하여 객체의 메소드 호출 할 수 있습니다 "X : 정적"과 "ObjectDataSource를"
  2. XAML 수를

    ,174 다음 HTML 처리 또는 화상 처리 코드에 버그가있는 경우, 그래서 임의의 URI로부터 HTML 및 이미지를 포함 멀웨어 솔루션은 두 가지이다 그것을

을 악용

  1. 인스턴스화 할 수있는 클래스를 제한하십시오.
  2. Uri 속성의 설정을 상대 원본에만 제한하십시오. 요소 이름, 첨부-속성 이름, 마크 업 확장, 유형 "유형"의 속성 :

    을 인스턴스화 할 수있는 클래스를 제한

다행히 단지 유형이 나타날 수있는 장소의 제한된 수있다. 표준 형식 확장을 제외한 다른 형식을 사용하지 않도록 설정하면 모든 용도를 검색하는 것이 매우 간단하며 XAML에서 참조되는 형식의 전체 목록을 작성할 수 있습니다. 이는 알려진 안전한 유형의 허용 목록과 비교하여 확인할 수 있습니다. 안전 목록에없는 참조 된 모든 형식은 XAML이 거부되도록합니다.

참고 : 기본 제공 XamlReader를 사용하면 사용자 지정 IXamlTypeResolver를 제공 할 수 없습니다. 향상된 XamlReader를 사용하여 사용자 지정 IXamlTypeResolver를 허용하므로로드 타임에 XAML에서 참조되는 모든 형식을 실제로 검색 할 수 있으며 구문 분석을 전혀 수행하지 않고도 런타임을 실행할 수 있습니다. 화이트리스트. 열린 우리당 속성

의 설정을 제한

다시 XAML의 견고한 구조는 우리의 원조에 온다. 호출 할 모든 속성 설정자와 설정할 값 또는 바인딩을 확인하기 위해 쉽게 검사 할 수 있습니다 (스타일 및 첨부 된 속성을 잊지 마십시오). Uri 팩을 제외하고 절대 Uri가 사용되면 XAML을 거부 할 수 있습니다. 마크 업 확장을 사용하여 Uri를 설정하려는 시도도 비슷하게 거부됩니다.