Windows Forms'ta Ek Güvenlik Konuları
.NET Framework güvenlik ayarları, uygulamanızın bir kısmi güven ortamında yerel bilgisayarınızdan farklı şekilde çalışmasına neden olabilir. .NET Framework, diğer şeyler arasında dosya sistemi, ağ ve yönetilmeyen apı 'ler gibi bu kritik yerel kaynaklara erişimi kısıtlar. güvenlik ayarları, Microsoft Windows apı 'sini veya güvenlik sistemi tarafından doğrulanamayan diğer apı 'leri çağırma yeteneğini etkiler. Güvenlik Ayrıca, dosya ve veri erişimi ve yazdırma dahil olmak üzere uygulamanızın diğer yönlerini de etkiler. kısmi güven ortamındaki dosya ve veri erişimi hakkında daha fazla bilgi için, bkz. Windows Forms daha güvenli dosya ve veri erişimi. kısmi güven ortamında yazdırma hakkında daha fazla bilgi için, Windows Forms daha güvenli yazdırmabölümüne bakın.
aşağıdaki bölümlerde, pano ile çalışmayı, pencere düzenlemesini gerçekleştirmeyi ve kısmi güven ortamında çalışan uygulamalardan Windows apı 'sini çağırmayı ele alınmaktadır.
Pano erişimi
UIPermissionSınıfı panoya erişimi denetler ve ilişkili UIPermissionClipboard numaralandırma değeri erişim düzeyini gösterir. Aşağıdaki tabloda olası izin düzeyleri gösterilmektedir.
| UIPermissionClipboard değeri | Açıklama |
|---|---|
| AllClipboard | Pano, kısıtlama olmadan kullanılabilir. |
| OwnClipboard | Pano bazı kısıtlamalarla kullanılabilir. Panoya veri yerleştirme (komut işlemlerini kopyalama veya kesme) özelliği Kısıtlamasız. Metin kutusu gibi yapıştırmayı kabul eden iç denetimler Pano verilerini kabul edebilir, ancak kullanıcı denetimleri panodan program aracılığıyla okunamaz. |
| NoClipboard | Pano kullanılamıyor. |
Varsayılan olarak, yerel Intranet bölgesi erişim alır AllClipboard ve Internet bölgesi OwnClipboard erişim alır. Bu, uygulamanın panoya veri kopyalayabileceği, ancak uygulamanın Pano 'ya program aracılığıyla Yapıştırmayacağı veya Panodan okuyamayacağı anlamına gelir. Bu kısıtlamalar, başka bir uygulama tarafından panoya kopyalanmış içeriği okumaktan tam güven olmayan programları engeller. Uygulamanız tam Pano erişimi gerektiriyorsa, ancak izinleriniz yoksa, uygulamanız için izinleri yükseltme yapmanız gerekir. İzinleri yükseltme hakkında daha fazla bilgi için bkz. Genel Güvenlik Ilkesi yönetimi.
Pencere düzenleme
UIPermissionSınıfı ayrıca pencere işleme ve diğer kullanıcı arabirimi ile ilgili diğer eylemleri gerçekleştirme iznini denetler ve ilişkili UIPermissionWindow numaralandırma değeri erişim düzeyini gösterir. Aşağıdaki tabloda olası izin düzeyleri gösterilmektedir.
Varsayılan olarak, yerel Intranet bölgesi erişim alır AllWindows ve Internet bölgesi SafeTopLevelWindows erişim alır. Bu, Internet bölgesinde, uygulamanın çoğu Pencereleme ve Kullanıcı arabirimi eylemini gerçekleştirebileceği, ancak pencerenin görünümünün değiştirildiği anlamına gelir. Değiştirilen pencere ilk çalıştırıldığında bir balon bildirimi görüntüler, değiştirilmiş başlık çubuğu metnini içerir ve başlık çubuğunda bir Kapat düğmesi gerektirir. Balon bildirimi ve başlık çubuğu, uygulamanın kısmi güven altında çalıştırdığı uygulamanın kullanıcısına göre belirlenir.
| UIPermissionWindow değeri | Açıklama |
|---|---|
| AllWindows | Kullanıcılar, kısıtlama olmadan tüm Windows ve Kullanıcı giriş olaylarını kullanabilir. |
| SafeTopLevelWindows | Kullanıcılar çizim için yalnızca daha güvenli olan üst düzey Windows ve daha güvenli bir alt pencere kullanabilir ve yalnızca bu üst düzey Windows ve alt pencere içindeki kullanıcı arabirimi için Kullanıcı giriş olaylarını kullanabilir. Bu güvenli pencereler açıkça etiketlidir ve en düşük ve en yüksek boyut kısıtlamalarına sahiptir. Kısıtlamalar, sistem oturumu açma ekranlarını veya sistem masaüstünü taklit etmek gibi zararlı olabilecek kimlik sahtekarlığı saldırılarını engeller ve üst Windows, odak ile ilgili API 'lere ve denetimin kullanımına programlı erişimi kısıtlar. ToolTip |
| SafeSubWindows | Kullanıcılar çizim için yalnızca daha güvenli olan alt pencereleri kullanabilir ve yalnızca o alt penceredeki Kullanıcı arabirimi için Kullanıcı giriş olaylarını kullanabilir. Bir tarayıcıda görünen denetim, daha güvenli bir alt pencerenin örneğidir. |
| NoWindows | Kullanıcılar herhangi bir Windows veya Kullanıcı arabirimi olayını kullanamaz. Kullanıcı arabirimi kullanılamaz. |
Sabit listesi tarafından tanımlanan her izin düzeyi UIPermissionWindow , yukarıdaki düzeyden daha az eyleme izin verir. Aşağıdaki tablolar ve değerleri tarafından kısıtlanan eylemleri gösterir SafeTopLevelWindows SafeSubWindows . her üye için gereken tam izinler için .NET Framework sınıf kitaplığı belgelerindeki bu üyeye yönelik başvuruya bakın.
SafeTopLevelWindows izin, aşağıdaki tabloda listelenen eylemleri kısıtlar.
| Bileşen | Kısıtlanmış eylemler |
|---|---|
| Application | -Özelliği ayarlanıyor SafeTopLevelCaptionFormat . |
| Control | -Özelliğini alma Parent . -Özelliği ayarlanıyor Region .-,, FindForm Focus FromChildHandle Ve,, FromHandle PreProcessMessage ReflectMessage veya SetTopLevel yöntemi çağırma. - GetChildAtPoint Döndürülen denetim çağıran denetimin bir alt öğesi değilse yöntemi çağırma. -Denetimi bir kapsayıcı denetiminin içinde değiştirir. |
| Cursor | -Özelliği ayarlanıyor Clip . -Yöntemi çağrılıyor Hide . |
| DataGrid | -Yöntemi çağrılıyor ProcessTabKey . |
| Form | - ActiveForm Veya özelliği alınıyor MdiParent . - ControlBox , ShowInTaskbar , Veya özelliğini ayarlama TopMost . - Opacity Özellik %50 olarak ayarlanıyor. - WindowState Özelliği Minimized Program aracılığıyla olarak ayarlanıyor. -Yöntemi çağrılıyor Activate . - None , FixedToolWindow , Ve SizableToolWindow FormBorderStyle numaralandırma değerlerini kullanma. |
| NotifyIcon | -Bileşen kullanımı NotifyIcon tamamen kısıtlıdır. |
Değer, SafeSubWindows değer tarafından verilen kısıtlamaların yanı sıra aşağıdaki tabloda listelenen eylemleri kısıtlar SafeTopLevelWindows .
| Bileşen | Kısıtlanmış eylemler |
|---|---|
| CommonDialog | -Sınıfından türetilmiş bir iletişim kutusu gösteriliyor CommonDialog . |
| Control | -Yöntemi çağrılıyor CreateGraphics . -Özelliği ayarlanıyor Cursor . |
| Cursor | -Özelliği ayarlanıyor Current . |
| MessageBox | -Yöntemi çağrılıyor Show . |
Üçüncü taraf denetimleri barındırma
Formlarınızın üçüncü taraf denetimlerini barındırmaları halinde başka bir pencere işleme meydana gelebilir. Üçüncü taraf denetimi, UserControl kendinizi geliştirmemiş ve derlediğiniz özel bir denetimdir. Barındırma senaryosunun yararlanması zor olsa da, üçüncü taraf bir denetim için kendi formunuzun tüm alanını kapsayacak şekilde işleme yüzeyini genişletmek için teorik olarak mümkündür. Bu denetim daha sonra kritik bir iletişim kutusunu taklit verebilir ve kullanıcılarınızın Kullanıcı adı/parola birleşimleri veya banka hesap numaraları gibi bilgileri ister.
Bu olası riski sınırlamak için, yalnızca güvenebileceğiniz satıcıların üçüncü taraf denetimlerini kullanın. Doğrulanamayan bir kaynaktan indirdiğiniz üçüncü taraf denetimleri kullanıyorsanız, olası kötüye kullanım için kaynak kodu incelemenizi öneririz. Kaynağın kötü amaçlı olmayan olduğunu doğruladıktan sonra, kaynağın derlemeyle eşleştiğinden emin olmak için derlemeyi kendiniz derlemeniz gerekir.
Windows API çağrıları
uygulama tasarımınız Windows apı 'den bir işlevin çağrılmasını gerektiriyorsa, yönetilmeyen koda erişiyorsunuz. bu durumda, Windows apı çağrısı veya değerleriyle çalışırken kodun pencere veya işletim sistemine yönelik eylemleri belirlenemez. SecurityPermission' In sınıfı ve UnmanagedCode SecurityPermissionFlag numaralandırma denetiminin değeri, yönetilmeyen koda erişim. Bir uygulama, yönetilmeyen koda yalnızca izin verildiğinde erişebilir UnmanagedCode . Varsayılan olarak, yalnızca yerel olarak çalışan uygulamalar yönetilmeyen kodu çağırabilir.
bazı Windows Forms üyeleri izin gerektiren yönetilmeyen erişim sağlar UnmanagedCode . Aşağıdaki tabloda, System.Windows.Forms izin gerektiren ad alanındaki Üyeler listelenmiştir. bir üye için gerekli izinler hakkında daha fazla bilgi için .NET Framework sınıf kitaplığı belgelerine bakın.
| Bileşen | Üye |
|---|---|
| Application | - AddMessageFilter yöntemidir - CurrentInputLanguage özelliði - Exit yöntemidir- ExitThread yöntemidir - ThreadException olay |
| CommonDialog | - HookProc yöntemidir - OwnerWndProc\ yöntemi - Reset yöntemidir - RunDialog yöntemidir |
| Control | - CreateParams yöntemidir - DefWndProc Yöntem - DestroyHandle Yöntem - WndProc Yöntem |
| Help | - ShowHelp Yöntemler - ShowHelpIndex Yöntem |
| NativeWindow | - NativeWindow Sınıfı |
| Screen | - FromHandle Yöntem |
| SendKeys | - Send Yöntem - SendWait Yöntem |
Uygulamanıza yönetilmiyor kodu çağırma izni yoksa, uygulamanıza izin isteğinde veya özellikleri uygulamanın alternatif yollarını göz önünde bulundurabilirsiniz; çoğu durumda Windows Forms, Windows API işlevlerine yönetilen UnmanagedCode bir alternatif sağlar. Alternatif bir yöntem yoksa ve uygulamanın yönetmemiş koda erişmesi gerekirse uygulamanın izinlerini yükseltmelisiniz.
Bir uygulamanın her şeyi en iyi şekilde gerçekleştirmesi için, unmanaged kod çağırma izni. Bu nedenle, yalnızca güvenilir bir kaynaktan gelen uygulamalar için, unmanaged kodu çağırma izni verilmiyor. Alternatif olarak, uygulamaya bağlı olarak, unmanaged code çağrısı yapan uygulama işlevselliği parçası isteğe bağlı olabilir veya yalnızca tam güven ortamında etkinleştirilebilir. Tehlikeli izinler hakkında daha fazla bilgi için bkz. Tehlikeli İzinler ve İlke Yönetimi. İzinleri yükseltme hakkında daha fazla bilgi için bkz. Genel Güvenlik İlkesi Yönetimi.