Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  .NET Framework'te kodlarımızın yapabileceği işleri kısıtlamak için kullanabileceğimiz güvenlik yöntemi. Mesela kodlarımızın C:\ klasörüne ulaşmasını engellemek istiyorsak FileIOPermission sınıfını kullanarak yetkilendirme yapabiliriz.

Yetkilendirme sınıflara veya sınıflara ait fonksiyonlara yapılabiliyor.

Yetkilendirme iki yöntem ile yapılabiliyor. Attribute kullanarak veya PermissionSet kullanarak. iki yönteminde birbirine çok yakın yöntemdir,sonuç olarak bakıldığında aynıdır. tek fark Attribute kullanıldığında yetkilendirme işlemi compile edilirken gerçekleşir. programımız compile edildiğinde bu yetkilendirme bilgileri programımızın assembly'si içindekimetadata bölümünde yer alır. Fakat PermissionSet kullanarak yetkilendirme yapılırsa güvenlik işlemleri programımız çalışırken gerçekleşir. Ayrıca, Attribute'ların compile edilmesi IL'den native uygulamaya derlenirken gerçekleşir. Yani yazdığımız kodun IL'e derlenmesi sırasında değildir.

Yetkilendirme işlemi assembly, class, struct, constructor, method tanımlamaları için gerçekleştirilebilir. interface tanımlarında yetkilendirme yapılamaz.

Biraz da kod örneği verelim, tam olsun.

Attribute kullanarak:
[RegistryPermission(SecurityAction.Demand, Unrestricted=true)]
public class RegistryOperations{
    public RegistryOperations() {}
    public void RegistryOpen(){}
    //sınıf içindeki tüm metodlar Registry'ye sınırsız olarak erişebilir.
}


Yukarıdaki kod'da attribute kullanarak sınıfımızın tüm metodlarına registry erişimi yetkisi verdik. Bu tür tanımlamaya declarative security syntax denir.

Sınıf kullanarak:
public class RegistryOperations{
    public RegistryOperations() {}
    public void RegistryOpen(){}

    public void RegistryDelete(){

        RegistryPermission rp = new RegistryPermission(RegistryPermissionAccess.Read,
            "HKEY_LOCAL_MACHINE\\Software, HKEY_CURRENT_USER, Software");

        rp.Demand();

        // Buradan itibaren bu metod boyunca registry'ye yazma işlemi yapılamaz.
        // Sorun oluştuğunda SecurityException oluşur.
    }
}


yukarıdaki örnekte de RegistryPermission sınıfı metod içinde oluşturulur ve Demand fonksiyon ile registry'ye erişim engellenir. bu tür kullanıma da imperative security syntax denir.
bateristt
27 Kasım 2005 12:00
2.  "Kendi yazdığım kodlara niye güvenlik kısıtlamaları koyayım, deli miyim?" diyebilirsiniz. Haklısınız. Hiç bir programcı kendi kendini sınırlamak istemez. Ama zaten CAS ile kendi kodlarınızı değil, kullandığınız yabncı assembly'ler varsa onları sınırlandırmış oluyorsunuz.

Örneğin ZIP'li dosyalar üzerinde çalışmak için kullandığınız third-party bir dll'iniz olsun. Çok memnunsunuz, ailecek severek kullanıyorsunuz. Ama bilmiyorsunuz ki; aslında bu dll dost görünüp arkadan vuruyor. Siz bu dll ile ZIP'li dosyaları açıyor, okuyorsunuz; ama dll bir taraftan sistemde kayıtlı kullanıcı bilgilerini internet üzerinden bir yerlere gönderiyor, sağa sola spam mailler atıyor. İşte bu gibi olası durumlarda ZIP dll'inizi kullandığınız metoda güvenlik sınırlamaları getirirsiniz. "Ben bilmiyom bu dll arka tarafta ne turşular kaşıklıyor, iyisi mi bunun network'e, filesystem'e erişimini engelleyeyim, nolur nolmaz" deyip önleminizi baştan alırsınız.
fizikci
27 Kasım 2005 13:38
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.


Bu başlığa bkz veren girişlerin başlıkları nedir?

Bu başlığa bkz veren girişler başka hangi başlıklara bkz verdiler?
© 2005, Bilişim Kulübü. (1109 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen