2010-04-09 15 views
7

Jestem naprawdę nowy w WPF w .Net Framework (usuń to z drogi). Piszę aplikację, w której interfejs można bardzo łatwo dostosować, po prostu ładując pliki .xaml (w tej chwili element strony) do ramki, a następnie mapując elementy sterujące za pomocą nazw w razie potrzeby. Chodzi o to, aby mieć społeczność ludzi, którzy są zainteresowani robieniem skórek, skórki mojej aplikacji, ale chcą (podobnie jak Winamp).Problemy skórne związane ze skórowaniem WPF

Teraz powstaje pytanie, ze względu na brak wiedzy na temat Xaml, czy możliwe jest tworzenie złośliwych stron Xaml, które po pobraniu i wykorzystaniu mogłyby zawierać inne osadzone elementy iframe lub inne elementy, które mogłyby osadzać html lub wywoływać zdalne strony internetowe ze złośliwą zawartością ? Wierzę, że tak może być.

W takim przypadku mam dwie opcje; albo mam zautomatyzowany proces, który może usunąć te typy plików Xaml, sprawdzając ich elementy przed zezwoleniem na pobranie (co, jak zakładam, byłoby najtrudniejsze) lub sprawił, że człowiek przejrzał je przed pobraniem. Czy istnieją alternatywy, których jestem nieświadomy, może to ułatwić cały proces?

Odpowiedz

3

Jeśli po prostu załadować XAML bez podejmowania żadnych środków ostrożności Istnieją dwa potencjalne problemy:

  1. XAML może wywołać metody na swoich obiektach za pomocą „x: static” i „ObjectDataSource”
  2. XAML can włączenie HTML i obrazy z dowolnego URI, więc jeśli jest to błąd w HTML-przetwórczego lub przetwarzania obrazu kodu malware może to wykorzystać

rozwiązaniem jest dwojaki:

  1. Ogranicz klasy, które można utworzyć.
  2. Ogranicza ustawienie właściwości Uri tylko do źródeł względnych.

Ograniczenie klas, które mogą być instancja

szczęście istnieje tylko ograniczona liczba miejsc może pojawić typów: nazwy elementów, nazwy dołączony-mieszkalne, znaczników rozszerzenia właściwości typu „typem”. Przez uniemożliwienie jakiegokolwiek rozszerzenia standardowego typu, skanowanie jest bardzo proste i zawiera pełną listę typów, do których odwołuje się XAML. Można to sprawdzić na białej liście znanych bezpiecznych typów. Wszelkie typy, do których istnieją odniesienia, które nie znajdują się na bezpiecznej liście, powodują odrzucenie XAML.

Uwaga: Wbudowany XamlReader nie pozwala na dostarczenie niestandardowego IXamlTypeResolver. Używam ulepszonego XamlReadera, który napisałem, że pozwala na niestandardowy IXamlTypeResolver, więc mogę faktycznie wykryć każdy typ, do którego odwołuję się w XAML w czasie ładowania i czasu działania bez wykonywania jakiejkolwiek analizy: Po prostu nie udało się rozwiązać żadnego typu Biała lista.

Ograniczenie ustawienia właściwości Uri

Ponownie sztywna XAML przychodzi z pomocą. Można go łatwo zeskanować w celu określenia każdego wywoływacza właściwości, który będzie wywoływany, oraz wartości lub powiązania, które należy ustawić (nie zapomnij o stylach i załączonych właściwościach). XAML może zostać odrzucony, jeśli zostanie użyty bezwzględny Uri oprócz pakietu Uri. Próby ustawienia Uri przy użyciu rozszerzenia znaczników byłyby podobnie odrzucane.

Powiązane problemy