CodeAccessPermission.PermitOnly Yöntem

Tanım

Çağrı yığınındaki daha yüksek çağıranların geçerli örnek tarafından belirtilen kaynak dışındaki tüm kaynaklara erişmek için bu yöntemi çağıran kodu kullanmasını engeller.

public:
 virtual void PermitOnly();
public void PermitOnly ();
abstract member PermitOnly : unit -> unit
override this.PermitOnly : unit -> unit
Public Sub PermitOnly ()

Uygulamalar

Özel durumlar

Geçerli çerçeve için zaten etkin PermitOnly() bir çerçeve var.

Açıklamalar

Önemli

PermitOnly yöntemi yalnızca kaynakları tam olarak güvenilen kodla yanlışlıkla erişime karşı korumak için kullanılmalıdır. Kaynakları güvenilmeyen kod tarafından kasıtlı olarak kötüye kullanıma karşı korumak için kullanılmamalıdır. Örneğin, yöntem A bir izin için bir PermitOnly verirse ve sonra yöntemini Bçağırırsa, yöntemi bir Assertvererek öğesini B geçersiz kılabilirPermitOnly. Çağrılan yöntem yığında her zaman daha yüksektir. Bu nedenle, yöntem B korumalı bir kaynağa erişmeye çalışırsa, yöntem hemen çağıran olduğundan B güvenlik sistemi onunla izinleri denetlemeye başlar ve yığında hiç veya PermitOnly daha düşük olmadığını Deny onaylamak için yığında aşağı doğru ilerler. Kaynağa erişmeye çalışan yöntemi B, yöntemini kullanarak Assert yığın adımını hemen durdurabilir. Bu durumda, PermitOnly yönteme (çağırma yöntemi A ) göre yığına yerleştirilen hiçbir zaman bulunmaz.

PermitOnly , her iki nedende de yığın yürüyüşlerinin başarısız olması durumunda başarısız olmasına neden olan öğesine benzer Deny. Aradaki fark, yığın yürüyüş işleminin Deny başarısız olmasına neden olacak izinleri belirtir, ancak PermitOnly yığın adımlama işleminin başarısız olmasına neden olmayan tek izinleri belirtir.

Kodunuzun yalnızca belirtilen kaynaklara erişmek için kullanılabildiğinden emin olmak için bu yöntemi çağırın. çağrısı PermitOnly , çağıran kod çağırana geri dönene kadar etkilidir. Çerçevede yalnızca bir tane PermitOnly etkin olabilir. Çerçevede bir etkin PermitOnly olduğunda çağrılmaya PermitOnly çalışıldığında sonucu bir SecurityExceptionolur. Etkin RevertPermitOnlyPermitOnlybir öğesini çağırmak veya RevertAll kaldırmak için .

PermitOnly izin talebi başarılı olmadığından verilmeyen izinler için yoksayılır. Ancak, çağrı yığınının alt kısmındaki kod daha sonra bu izni çağırırsaDemand, yığın kılavuzu çağrılmaya PermitOnlyçalışılan koda ulaştığında bir SecurityException oluşturulur. Bunun nedeni, çağrılan PermitOnly koda bu izin için çağrılsa PermitOnly bile izin verilmemiş olmasıdır. Çağrı yığını genellikle artan olarak temsil edilir, böylece çağrı yığınında daha yüksek yöntemler çağrı yığınında daha düşük çağrı yöntemleri çağırır.

Devralanlara Notlar

Bu yöntemi geçersiz kılamazsınız.

Şunlara uygulanır