Kompatibilita a migrace zásad zabezpečení přístupu kódu
V rozhraní .NET Framework verze 4 byla část zásad zabezpečení přístupu kódu (CAS) prohlášena za zastaralou. Díky tomu můžete narazit na upozornění kompilace a výjimky za běhu, pokud explicitně nebo implicitně voláte zastaralé typy a členy zásad (prostřednictvím jiných typů a členů).
Můžete se varováním a chybám vyhnout buď pomocí:
Migrace na rozhraní .NET Framework 4, které obsahuje náhrady za zastaralé volání.
-nebo-
Pomocí konfiguračního elementu <NetFx40_LegacySecurityPolicy>, který se přidá do starší verze chování zásad CAS.
Toto téma obsahuje následující oddíly:
Explicitní použití
Implicitní použití
Chyby a upozornění
Migrace: Náhrada za zastaralá volání
Kompatibilita: Použití volby - starší verze zásad CAS
Explicitní použití
Členy, které přímo manipulují se zásadami zabezpečení nebo vyžadují zásady CAS do izolovaného prostoru jsou zastaralé a standardně ohlásí chyby.
Příkladem jsou:
Implicitní použití
Několik přetížení načítání sestavení produkuje chyby, protože implicitně používají zásady CAS. Tato přetížení používají parametr Evidence, který slouží k vyřešení zásad CAS a poskytuje udělenou sadu oprávnění pro sestavení.
Dále jsou uvedeny některé příklady. Zastaralá přetížení jsou ty, která používají Evidence jako parametr:
Chyby a upozornění
Pokud jsou zastaralé typy a členy používány, vytváří následující chybové zprávy. Všimněte si, že typ System.Security.Policy.Evidence sám o sobě není zastaralý.
Upozornění v době kompilace:
warning CS0618: '<API Name>' is obsolete: 'This method is obsolete and will be removed in a future release of the .NET Framework. Please use <suggested alternate API>. See <link> for more information.'
Výjimka za běhu:
NotSupportedException: This method uses CAS policy, which has been obsoleted by the .NET Framework. In order to enable CAS policy for compatibility reasons, please use the <NetFx40_LegacySecurityPolicy> configuration switch. Please see <link> for more information.
Migrace: Náhrada za zastaralá volání
Určení úrovně důvěryhodnosti sestavení
Zásady CAS se často používají k určení udělené sady oprávnění nebo úrovně důvěryhodnosti náležící sestavení nebo doméně aplikace. .NET Framework 4 zpřístupňuje následující užitečné vlastnosti, které nemusí řešit zásady zabezpečení:
Sandboxing domény aplikace
Metoda AppDomain.SetAppDomainPolicy je obvykle používána pro sandboxing sestavení v doméně aplikace. Rozhraní .NET Framework 4 zpřístupňuje členy, které pro tento účel nemusí použít PolicyLevel. Další informace naleznete v tématu Postupy: Spustit částečně důvěryhodný kód v izolovaném prostoru.
Stanovení bezpečné nebo přiměřené sady oprávnění pro částečně důvěryhodný kód.
Hostitelé často potřebují stanovit oprávnění, která jsou vhodná pro hostovaný kód sandboxing. Před rozhraním .NET Framework 4 zásady CAS poskytovaly metodu SecurityManager.ResolvePolicy, která představovala způsob, jak provést tuto činnost. Jako náhradu poskytuje rozhraní .NET Framework 4 metodu SecurityManager.GetStandardSandbox, která vrací bezpečnou standardní sadu oprávnění pro poskytovanou legitimaci.
Non-sandboxing scénáře: Přetížení pro načtení sestavení
Důvod pro používání přetížení načtení sestavení může být použití parametrů, které nejsou jinak dostupné místo sandboxing sestavení. Počínaje rozhraním .NET Framework 4, přetížení načtení sestavení, které nevyžadují objekt System.Security.Policy.Evidence jako parametr, například AppDomain.ExecuteAssembly(String, String[], Byte[], AssemblyHashAlgorithm) povoluje tento scénář.
Pokud chcete izolovat sestavení, použijte přetížení AppDomain.CreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[]).
Kompatibilita: Použití volby - starší verze zásad CAS
<konfigurační element NetFx40_LegacySecurityPolicy> vám umožňuje určit, který proces nebo knihovna používá starší verzi zásad CAS. Když povolíte tento element, přetížení zásad a legitimace bude fungovat stejně jako tomu bylo v předchozích verzích vývojového rámce.
Poznámka |
---|
Chování zásad CAS je určeno na základě verze modulu runtime, proto úprava zásad CAS pro jednu verzi modulu runtime neovlivní zásady CAS jiné verze. |
<configuration>
<runtime>
<NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>
</configuration>
Viz také
Úkoly
Postupy: Spustit částečně důvěryhodný kód v izolovaném prostoru