Aracılığıyla paylaş


Windows Forms'da Ek Güvenlik Konuları

Önemli

Bu içerik, aksi belirtilmedikçe yalnızca .NET Framework için geçerlidir.

.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.

Panoya Erişim

UIPermission sınıfı Panoya erişimi kontrol eder ve ilişkili UIPermissionClipboard sınıflandırma değeri erişim düzeyini belirtir. 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. 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önetimi.

Pencere Manipulasyonu

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 Açıklama
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ı kimlik sahtekarlığı saldırılarını önler ve programlı üst pencere erişimini, odakla ilgili API'leri ve ToolTip kontrolünün 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 tablolar, SafeTopLevelWindows ve SafeSubWindows değerleriyle kısıtlanan eylemleri belirtir. 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ıtlanan eylemler
Application - SafeTopLevelCaptionFormat özelliğini ayarlama.
Control - Parent özelliğini alma.
- Region özelliğini ayarlama.
- FindForm, Focus, FromChildHandle ve FromHandle, PreProcessMessage, ReflectMessage veya SetTopLevel yöntemini çağırma.
- Kontrol, çağıran GetChildAtPoint kontrolün alt öğesi değilse, yöntemi çağırın.
- Kapsayıcı kontrol içinde kontrol odağını değiştirin.
Cursor - Clip özelliğini ayarlama.
Hide yöntemini çağırma.
DataGrid ProcessTabKey yöntemini çağırma.
Form - ActiveForm veya MdiParent özelliğini alma.
- ControlBox, ShowInTaskbar, veya TopMost özelliğini ayarlama.
- Opacity özelliğini 50%'ın altında ayarlama.
- WindowState özelliğini program aracılığıyla Minimized olarak ayarlama.
Activate yöntemini çağırma.
- None, FixedToolWindow ve SizableToolWindowFormBorderStyle numaralandırma değerlerini kullanma.
NotifyIcon - Bileşenin NotifyIcon kullanımı tamamen kısıtlanmıştır.

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

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

Üçü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ğrulanamayan bir kaynaktan indirdiğiniz üçüncü taraf denetimleri kullanıyorsanız, potansiyel istismarlar 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. SecurityPermission sınıfı ve UnmanagedCode numaralandırmasının SecurityPermissionFlag değeri, yönetilmeyen koda erişimi kontrol eder. Bir uygulama, UnmanagedCode izni verildiğinde yalnızca yönetilmeyen koda erişebilir. Varsayılan olarak, yalnızca yerel olarak çalışan uygulamalar yönetilmeyen kodu çağırabilir.

Bazı Windows Forms üyeleri, yönetilmeyen erişim sağlar ve bu, UnmanagedCode iznini gerektirir. 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 mülk
- 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öntemler
- 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 UnmanagedCode iznini talep etmeli veya özelliklerin uygulanmasının alternatif yollarını düşünmelisiniz; çoğu durumda Windows Forms, Windows API işlevlerine yönetilen bir alternatif sunar. 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önetimi. İzinleri yükseltme hakkında daha fazla bilgi için bkz. Genel Güvenlik İlkesi Yönetimi.

Ayrıca bakınız