izinleri için NET'in "SecurityAction" parametresini anlama

oy
5

Herkes SecurityAction enum için anlamını ve değerlerini amaçlarını açıklayabilir misiniz?

MSDN sayfa korkunç açık değildir. Bu Talep zamanında meydana oysa LinkDemand just-in-time derleme gerçekleşir diyor.

Neden ayrım ve hangi durumlar içinde ben aksine LinkDemand Demand kullanırsınız?

Aynı şekilde, InheritenceDemand, iddia ve PermitOnly gibi diğer ilginç değerlerin kullanım durumları nelerdir.

Oluştur 09/12/2008 saat 20:42
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
19

LinkDemand temelde belirtilen iznine sahip çağıran kod gerektirir. Talep, diğer taraftan, belirtilen iznine sahip çağıran kod, aynı zamanda çağıran kod adı verilen kod ve bu denilen kodu ve benzeri, tüm yol yığını sadece gerektirir (veya bir kadar assert tespit edilir; aşağıya bakınız).

JIT derleyicisi bir LinkDemand bir yöntemini çağıran bir bildiri vurursa çağıran kod iznine sahip olmadığını, hemen belirleyebildiği için LinkDemand, JIT derleme sırasında uygulanabilmesi. Talep belirli herhangi bir arama sırasında yığın ne olacağını bilmek derleme zamanında mümkün olmadığından, çalışma zamanında bir çağrı yöntemine gerçekleşen her zorlanan gerekmektedir. Bunun gibi, LinkDemand çok daha verimlidir. Ancak, bu verimlilik için takas az güvenlik. LinkDemand ile, arama kodu ITS çağıran kod izin vermeyeceğim olduğunu güvenen vardır (olan veya izni olmayabilir) kötü amaçlar için kullanmak. Demand ile (diğer bir deyişle, onun arayanlar LinkDemand ile yöntemine dolaylı erişebilmek için. Yararlanabilir çağrı kodu hiçbir güvenlik delikleri vardır güvenen vardır), yığın üzerinde herkes kesinlikle en (iznine sahip olduğunu biliyoruz bir sav ileri kadar az) bulunursa, bu nedenle güvenilmeyen arayanlar riski yoktur.

Assert temelde Demand için kısa devre olduğunu. yığın bir arayan (diğer bir deyişle, savunmak için yığın up sadece arayanlar iznine sahip gerekir) aktif Assert varsa Demand ile olur güvenlik denetimi durdurur. Yani, LinkDemand gibi, sen iddia ile kodun arayanlar tarafından istismar edilemeyeceğini güvenmek zorundayım.

Deny da Demand için kısa devre olduğunu, ancak bunun yerine bir izin iddia ait bir arayan olabilecek bir izni iptal eder. Hiçbir yabancı izinler sömürülebilir olabilecek bir arama sırasında yürürlükte olmasını sağlayarak olası güvenlik açıkları engellenmesine yardımcı olmak için bu kullanabilirsiniz.

PermitOnly bunun yerine belirtilenden HARİÇ her izni inkar bir özel izin inkar dışında Reddet gibidir.

InheritanceDemand, diğerlerinin aksine, doğrudan yöntem çağrıları ilgili değildir, ancak söylüyor InheritanceDemand ile sınıfından devralamaz iznine sahip olmayan bir sınıf. Bu aksi soyundan sınıflar için erişilebilir olacaktır sınıfın korumalı üyelerine erişmesini güvenilmeyen kodu durdurmak için, örneğin, kullanılabilir.

Cevap 09/12/2008 saat 22:56
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more