2010-04-09 32 views
7

.NET Framework WPF (yolumdan olsun) gerçekten yeniyim Endişeler. Arayüzün sadece bir sayfadaki .xaml (şu anda bir Sayfa elemanı) dosyasını bir çerçeveye yükleyerek ve ardından kontrolleri isimlerle adlar aracılığıyla eşleştirerek çok özelleştirilebilir bir uygulama yazıyorum. Buradaki fikir, derileri yapmakla ilgilenen, uygulamamı ciltlemek istedikleri (Winamp gibi) bir topluluk topluluğuna sahip olmaktır.WPF Cilt Stiller Güvenlik

Şimdi, Xaml bilgisinden yoksun olduğum için, indirilen ve kullanıldığında html gömebilecek veya kötü amaçlı içeriğe sahip uzak web sayfalarını arayabilen başka gömülü Iframe'ler veya diğer öğelere sahip olabilecek kötü amaçlı Xaml sayfaları oluşturmak olasıdır. ? Bunun böyle olabileceğine inanıyorum.

Bu durumda o zaman iki seçenek; ya da indirmeye izin vermeden önce (en zor olacağını düşündüğüm) öğelerinizi kontrol ederek veya bir insanı indirmeden önce gözden geçirerek, bu tür Xaml dosyalarını kaldırabilen otomatik bir işlem var. Tüm bu süreci çok daha kolaylaştırabileceğinden habersiz alternatifler var mı?

cevap

3

sadece üzerinde herhangi önlem iki potansiyel endişeler vardır almadan XAML yüklerseniz:

  1. XAML kullanarak nesneler üzerinde yöntemleri çağırabilir "x: Statik" ve "ObjectDataSource"
  2. XAML can

    : HTML işleme veya görüntü işleme kodunda bir hata varsa bu yüzden, keyfi Uris HTML ve görüntüleri birleştirmek, kötü amaçlı yazılım çözümü ikilidir o

yararlanabilir

  1. Limiti örneği olabilir sınıflar.
  2. yalnızca göreli kaynaklarına Uri özelliklerinin ayarı kısıtlayın. Eleman adları Ekli-özellik adları, İşaretleme uzantıları, türü "Türü" özellikleri:

    örneği oluşturulmak sınıfları sınırlandırılması

Neyse sadece tipleri görünebilir yerleri sınırlı sayıda vardır. Standart tür uzantılarından herhangi birini devre dışı bırakarak, tüm kullanımları taramak ve XAML'de başvurulan türlerin tam listesini oluşturmak oldukça basittir. Bu bilinen güvenli türlerin beyaz listesine karşı kontrol edilebilir. Güvenli listede bulunmayan başvurular XAML'nin reddedilmesine neden olur.

Not: Dahili XamlReader özel bir IXamlTypeResolver sağlamak izin vermez. üzerinde her türlü türünü çözmek için sadece başarısız olmaz: Ben o özel IXamlTypeResolver izin verdiğini yazdı gelişmiş bir XamlReader kullanmak, bu yüzden aslında yük anda XAML başvuruda bulunulan her türlü algılamak ve hiç bir ayrıştırma yapmadan vakit çalıştırabilir beyaz liste. Uri özellikleri

ayarını sınırlama

Yine XAML rijit yapısı yardımımıza gelir. Aranacak her özellik belirleyicisini ve ayarlanacak değeri veya bağlamayı (stilleri ve eklenmiş özellikleri unutmayın) belirlemek için kolayca taranabilir. Bir paket Uri dışında mutlak bir Uri varsa XAML reddedilebilir. İşaretleme uzantısı kullanarak Uri ayarlama girişimleri de benzer şekilde reddedilir.