DynamicMethod.IsSecurityCritical Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá hodnotu, která označuje, zda aktuální dynamická metoda je zabezpečení-kritické nebo zabezpečení-bezpečné-kritické, a proto může provádět kritické operace.
public:
virtual property bool IsSecurityCritical { bool get(); };
public override bool IsSecurityCritical { get; }
member this.IsSecurityCritical : bool
Public Overrides ReadOnly Property IsSecurityCritical As Boolean
Hodnota vlastnosti
true
pokud je aktuální dynamická metoda důležitá pro zabezpečení nebo bezpečnostně kritická; false
pokud je transparentní.
Výjimky
Dynamická metoda nemá tělo metody.
Poznámky
Vlastnosti IsSecurityCritical, IsSecuritySafeCriticala IsSecurityTransparent hlásí úroveň průhlednosti dynamické metody určenou modulem CLR (Common Language Runtime). Kombinace těchto vlastností jsou uvedeny v následující tabulce:
Úroveň zabezpečení | IsSecurityCritical | IsSecuritySafeCritical | IsSecurityTransparent |
---|---|---|---|
Kritické | true |
false |
false |
Bezpečně kritická | true |
true |
false |
Průhlednost | false |
false |
true |
Použití těchto vlastností je mnohem jednodušší než zkoumání poznámek zabezpečení sestavení a jeho typů, kontrola aktuální úrovně důvěryhodnosti a pokus o duplikování pravidel modulu runtime.
Průhlednost dynamické metody závisí na modulu, ke kterým je přidružena. Pokud je dynamická metoda přidružena k typu, nikoli k modulu, závisí její průhlednost na modulu, který typ obsahuje. Dynamické metody nemají poznámky zabezpečení, takže mají přiřazenou výchozí průhlednost pro přidružený modul.
Anonymně hostované dynamické metody jsou vždy transparentní, protože modul poskytovaný systémem, který je obsahuje, je transparentní.
Průhlednost dynamické metody, která je přidružena k důvěryhodnému sestavení (tj. sestavení se silným názvem, které je nainstalováno v globální mezipaměti sestavení), je popsána v následující tabulce.
Poznámky ke sestavení Průhlednost úrovně 1 Průhlednost úrovně 2 Plně transparentní Průhlednost Průhlednost Plně kritické Kritická Kritická Smíšená průhlednost Průhlednost Průhlednost Nezávislá na zabezpečení Bezpečné-kritické Kritické Pokud například přidružíte dynamickou metodu k typu, který je v mscorlib.dll, který má úroveň 2 smíšené průhlednosti, dynamická metoda je transparentní a nemůže spustit kritický kód. Informace o úrovních transparentnosti najdete v tématech Kód s transparentním zabezpečením, Úroveň 1 a Kód transparentního zabezpečení, Úroveň 2.
Poznámka
Přidružení dynamické metody k modulu v sestavení důvěryhodné úrovně 1, které je nezávislé na zabezpečení, například System.dll, neumožňuje zvýšení důvěryhodnosti. Pokud sada udělení kódu, který volá dynamickou metodu neobsahuje sadu udělení System.dll (tj. úplná důvěryhodnost), SecurityException je vyvolána při volání dynamické metody.
Průhlednost dynamické metody, která je přidružena k částečně důvěryhodnému sestavení, závisí na způsobu načtení sestavení. Pokud je sestavení načteno s částečnou důvěryhodností (například do domény aplikace v sandboxu), modul runtime ignoruje poznámky zabezpečení sestavení. Sestavení a všechny jeho typy a členy, včetně dynamických metod, jsou považovány za transparentní. Modul runtime věnuje pozornost poznámkám zabezpečení pouze v případě, že je sestavení s částečným vztahem důvěryhodnosti načteno s plnou důvěryhodností (například do výchozí domény aplikace desktopové aplikace). V takovém případě modul runtime přiřadí dynamické metodě výchozí průhlednost pro metody podle poznámek sestavení.
Další informace o generování a průhlednosti reflexe najdete v tématu Problémy se zabezpečením při generování reflexe. Informace o transparentnosti najdete v tématu Změny zabezpečení.