Share via


Windows Forms'ta Ek Güvenlik Konuları

.NET Framework güvenlik ayarları uygulamanızın kısmi bir güven ortamında yerel bilgisayarınızdan farklı çalışmasına neden olabilir. .NET Framework, dosya sistemi, ağ ve yönetilmeyen API'ler gibi kritik yerel kaynaklara erişimi kısıtlar. Güvenlik ayarları, Microsoft Windows API'sini veya güvenlik sistemi tarafından doğrulanamayan diğer API'leri çağırma özelliğini etkiler. Güvenlik, dosya ve veri erişimi ve yazdırma gibi uygulamanızın diğer yönlerini de etkiler. Kısmi güven ortamında dosya ve veri erişimi hakkında daha fazla bilgi için bkz . Windows Forms'da Daha Güvenli Dosya ve Veri Erişimi. Kısmi güven ortamında yazdırma hakkında daha fazla bilgi için bkz . Windows Forms'da Daha Güvenli Yazdırma.

Aşağıdaki bölümlerde Pano ile çalışma, pencere işleme gerçekleştirme ve kısmi güven ortamında çalışan uygulamalardan Windows API'sini çağırma işlemleri açıklanmıştır.

Pano Erişimi

Sınıfı Pano'ya UIPermission 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 Tanım
AllClipboard Pano kısıtlama olmadan kullanılabilir.
OwnClipboard Pano bazı kısıtlamalarla kullanılabilir. Pano'ya veri yerleştirebilme (Kopyala veya Kes komut işlemleri) kısıtlanmamıştır. Metin kutusu gibi yapıştırmayı kabul eden iç denetimler Pano verilerini kabul edebilir, ancak kullanıcı denetimleri program aracılığıyla Pano'dan okuyamaz.
NoClipboard Pano kullanılamaz.

Varsayılan olarak, Yerel İntranet bölgesi erişim alır AllClipboard ve İnternet bölgesi erişim alır OwnClipboard . Bu, uygulamanın Pano'ya veri kopyalayabileceği, ancak uygulamanın program aracılığıyla Pano'ya yapıştıramayacağı veya Pano'dan okuyamayacağı anlamına gelir. Bu kısıtlamalar, tam güveni olmayan programların başka bir uygulama tarafından Pano'ya kopyalanan içeriği okumasını önler. Uygulamanız tam Pano erişimi gerektiriyorsa ancak izinlere sahip değilseniz, uygulamanızın izinlerini yükseltmeniz gerekir. İzinleri yükseltme hakkında daha fazla bilgi için bkz. Genel Güvenlik İlkesi Yönetici.

Pencere Düzenleme

UIPermission Sınıfı ayrıca pencere işleme ve kullanıcı arabirimiyle 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 İntranet bölgesi erişim alır AllWindows ve İnternet bölgesi erişim alır SafeTopLevelWindows . Bu, İnternet bölgesinde uygulamanın çoğu pencereleme ve kullanıcı arabirimi eylemi gerçekleştirebileceği, ancak pencerenin görünümünün değiştirileceği anlamına gelir. Değiştirilen pencere, ilk kez çalıştırıldığında bir balon bildirimi görüntüler, değiştirilmiş başlık çubuğu metni içerir ve başlık çubuğunda kapat düğmesi gerektirir. Balon bildirimi ve başlık çubuğu, uygulamanın kısmi güven altında çalıştırdığını uygulamanın kullanıcısına tanımlar.

UIPermissionWindow değeri Tanım
AllWindows Kullanıcılar kısıtlama olmadan tüm pencereleri ve kullanıcı giriş olaylarını kullanabilir.
SafeTopLevelWindows Kullanıcılar çizim için yalnızca daha güvenli üst düzey pencereler ve daha güvenli alt pencereler kullanabilir ve bu üst düzey pencereler ve alt pencereler içindeki kullanıcı arabirimi için yalnızca kullanıcı giriş olaylarını kullanabilir. Bu daha güvenli pencereler açıkça etiketlenir ve minimum ve maksimum boyut kısıtlamalarına sahiptir. Kısıtlamalar, sistem oturum açma ekranlarını veya sistem masaüstünü taklit etme gibi zararlı olabilecek kimlik sahtekarlık saldırılarını önler ve üst pencerelere, odakla ilgili API'lere ve denetimin ToolTip kullanımını kısıtlar,
SafeSubWindows Kullanıcılar çizim için yalnızca daha güvenli altwindows kullanabilir ve bu alt windows içindeki kullanıcı arabirimi için yalnızca kullanıcı giriş olaylarını kullanabilir. Tarayıcı içinde görüntülenen denetim, daha güvenli bir alt windows örneğidir.
NoWindows Kullanıcılar herhangi bir pencere veya kullanıcı arabirimi olayı kullanamaz. Hiçbir kullanıcı arabirimi kullanılamaz.

Numaralandırma tarafından UIPermissionWindow tanımlanan her izin düzeyi, yukarıdaki düzeyden daha az eyleme izin verir. Aşağıdaki tablolarda ve SafeSubWindows değerleriyle SafeTopLevelWindows kısıtlanan eylemler gösterilir. Her üye için gereken tam izinler için .NET Framework sınıf kitaplığı belgelerindeki bu üyenin başvurusuna bakın.

SafeTopLevelWindows permission, aşağıdaki tabloda listelenen eylemleri kısıtlar.

Bileşen Kısıtlanmış eylemler
Application - Özelliği ayarlama SafeTopLevelCaptionFormat .
Control - Özelliği alma Parent .
- Özelliği ayarlama Region .
- , , Focusve , , PreProcessMessageReflectMessageveya SetTopLevel yöntemini çağırma FindForm .FromHandleFromChildHandle
- Döndürülen denetim çağıran GetChildAtPoint denetimin alt öğesi değilse yöntemini çağırma.
- Kapsayıcı denetiminin içindeki denetim odağını değiştirin.
Cursor - Özelliği ayarlama Clip .
- yöntemini çağırma Hide .
DataGrid - yöntemini çağırma ProcessTabKey .
Form - veya MdiParent özelliğini almaActiveForm.
- , ShowInTaskbarveya TopMost özelliğini ayarlamaControlBox.
- Özelliği %50'nin Opacity altına ayarlama.
- Özelliği program aracılığıyla olarak Minimized ayarlamaWindowState.
- yöntemini çağırma Activate .
- , FixedToolWindowve SizableToolWindowFormBorderStyle numaralandırma değerlerini kullanmaNone.
NotifyIcon - Bileşenin NotifyIcon kullanımı tamamen kısıtlanmıştır.

değeri, SafeSubWindows aşağıdaki tabloda listelenen eylemleri, değer tarafından SafeTopLevelWindows getirilen kısıtlamalara ek olarak kısıtlar.

Bileşen Kısıtlanmış eylemler
CommonDialog - Sınıfından türetilmiş bir iletişim kutusu gösteriliyor CommonDialog .
Control - yöntemini çağırma CreateGraphics .
- Özelliği ayarlama Cursor .
Cursor - Özelliği ayarlama Current .
MessageBox - yöntemini çağırma Show .

Üçüncü Taraf Denetimlerini Barındırma

Formlarınız üçüncü taraf denetimleri barındırırsa başka bir pencere düzenleme türü oluşabilir. Üçüncü taraf denetimi, kendi geliştirmediğiniz ve derlemediğiniz herhangi bir özel UserControl denetimdir. Barındırma senaryosundan yararlanmak zor olsa da, teorik olarak üçüncü taraf bir denetimin işleme yüzeyini formunuzun tüm alanını kapsayacak şekilde genişletmesi mümkündür. Bu denetim daha sonra kritik bir iletişim kutusunu taklit edebilir ve kullanıcılarınızdan kullanıcı adı/parola bileşimleri veya banka hesap numaraları gibi bilgiler isteyebilir.

Bu olası riski sınırlamak için, yalnızca güvenebileceğiniz satıcıların üçüncü taraf denetimlerini kullanın. Doğrulamasız bir kaynaktan indirdiğiniz üçüncü taraf denetimleri kullanıyorsanız, olası açıklardan yararlanma için kaynak kodunu gözden geçirmenizi öneririz. Kaynağın kötü amaçlı olmadığını 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 API'sinden bir işlevi çağırmayı gerektiriyorsa yönetilmeyen koda erişmiş olursunuz. Bu durumda, Windows API çağrıları veya değerleriyle çalışırken kodun pencereye veya işletim sistemine yönelik eylemleri belirlenemez. Sınıfı SecurityPermission ve UnmanagedCode numaralandırma denetiminin SecurityPermissionFlag değeri yönetilmeyen koda erişim sağlar. Bir uygulama yönetilmeyen koda yalnızca izin verildiğinde UnmanagedCode erişebilir. Varsayılan olarak, yalnızca yerel olarak çalışan uygulamalar yönetilmeyen kodu çağırabilir.

Bazı Windows Forms üyeleri, izin gerektiren UnmanagedCode yönetilmeyen erişim sağlar. Aşağıdaki tabloda ad alanında System.Windows.Forms izin gerektiren üyeler listelenir. Bir üye için gereken izinler hakkında daha fazla bilgi için .NET Framework sınıf kitaplığı belgelerine bakın.

Bileşen Üye
Application - AddMessageFilter Yöntem
- CurrentInputLanguage Özellik
- Exit Yöntem
- ExitThread Yöntem
- ThreadException Olay
CommonDialog - HookProc Yöntem
- OwnerWndProc\Yöntem
- Reset Yöntem
- RunDialog Yöntem
Control - CreateParams Yöntem
- DefWndProc Yöntem
- DestroyHandle Yöntem
- WndProc Yöntem
Help - ShowHelp yöntemleri
- ShowHelpIndex Yöntem
NativeWindow - NativeWindow sınıfı
Screen - FromHandle Yöntem
SendKeys - Send Yöntem
- SendWait Yöntem

Uygulamanızın yönetilmeyen kodu çağırma izni yoksa, uygulamanızın izin istemesi UnmanagedCode veya özellikleri uygulamanın alternatif yollarını göz önünde bulundurmanız gerekir; çoğu durumda Windows Forms, Windows API işlevlerine yönetilen bir alternatif sağlar. Alternatif bir araç yoksa ve uygulamanın yönetilmeyen koda erişmesi gerekiyorsa, uygulamanın izinlerini yükseltmeniz gerekir.

Yönetilmeyen kodu çağırma izni, bir uygulamanın çoğu şeyi gerçekleştirmesine olanak tanır. Bu nedenle, yönetilmeyen kodu çağırma izni yalnızca güvenilen bir kaynaktan gelen uygulamalar için verilmelidir. Alternatif olarak, uygulamaya bağlı olarak, yönetilmeyen kod çağrısı yapan uygulama işlevselliğinin 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önetici. İzinleri yükseltme hakkında daha fazla bilgi için bkz. Genel Güvenlik İlkesi Yönetici.

Ayrıca bkz.