DynamicMethod.IsSecuritySafeCritical 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í-bezpečné-kritické na aktuální úrovni důvěryhodnosti; to znamená, jestli může provádět kritické operace a může k němu přistupovat transparentní kód.
public:
virtual property bool IsSecuritySafeCritical { bool get(); };
public override bool IsSecuritySafeCritical { get; }
member this.IsSecuritySafeCritical : bool
Public Overrides ReadOnly Property IsSecuritySafeCritical As Boolean
Hodnota vlastnosti
true pokud je dynamická metoda kritická pro zabezpečení na aktuální úrovni důvěryhodnosti; false pokud je kritický nebo transparentní.
Výjimky
Dynamická metoda nemá tělo metody.
Poznámky
Vlastnosti IsSecurityCritical, IsSecuritySafeCritical a IsSecurityTransparent hlásí úroveň transparentnosti dynamické metody, jak je určeno obecným jazykovým modulem CLR (Common Language Runtime). Kombinace těchto vlastností jsou uvedeny v následující tabulce:
| Úroveň zabezpečení | Je kritické pro bezpečnost | IsSecuritySafeCritical | IsSecurityTransparent |
|---|---|---|---|
| Kritická | true |
false |
false |
| Bezpečnostně kritické | true |
true |
false |
| Transparent | false |
false |
true |
Použití těchto vlastností je mnohem jednodušší než zkoumání poznámek zabezpečení sestavení a jeho typů, kontrole aktuální úrovně důvěryhodnosti a pokusu o duplikování pravidel modulu runtime.
Transparentnost dynamické metody závisí na modulu, ke kterým je přidružen. Pokud je dynamická metoda přidružena k typu místo modulu, jeho průhlednost závisí na modulu, který tento typ obsahuje. Dynamické metody nemají poznámky zabezpečení, takže jsou přiřazeny výchozí průhlednosti přidruženého modulu.
Dynamické metody, které jsou anonymně hostované, jsou vždy transparentní, protože modul poskytovaný systémem, který je obsahuje, je transparentní.
Transparentnost 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áno v následující tabulce.
Poznámky k sestavení Průhlednost úrovně 1 Průhlednost úrovně 2 Plně transparentní Transparent Transparent Plně kritické Kritická Kritická Smíšená průhlednost Transparent Transparent Nezávislá na zabezpečení Bezpečnostně kritické Kritická Pokud například přidružíte dynamickou metodu k typu, který je v mscorlib.dll, který má smíšenou průhlednost úrovně 2, dynamická metoda je transparentní a nemůže spustit kritický kód. Informace o úrovních transparentnosti najdete v tématu Security-Transparent Kód, úroveň 1 a Security-Transparent Kód, úroveň 2.
Note
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 grantů kódu, který volá dynamickou metodu neobsahuje sadu grantů System.dll (tj. úplný vztah důvěryhodnosti), 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 tom, jak je sestavení načteno. Pokud je sestavení načteno s částečnou důvěrou (například do domény aplikace typu sandbox), modul runtime ignoruje bezpečnostní anotace sestavení. Sestavení a všechny jeho typy a členy, včetně dynamických metod, jsou považovány za transparentní. Runtime věnuje pozornost bezpečnostním anotacím pouze v případě, že je sestavení s částečnou důvěryhodností načteno s plnou důvěryhodností (například do výchozí aplikační domény desktopové aplikace). Podle anotací sestavení přiřadí modul runtime dynamické metodě výchozí úroveň přístupnosti metod.
Další informace o generování a transparentnosti reflexe naleznete v tématu Problémy se zabezpečením při generování reflexe. Informace o transparentnosti naleznete v tématu Změny zabezpečení.