System.Reflection.Emit.DynamicMethod.IsSecurity* eigenschappen

Opmerking

In dit artikel vindt u aanvullende opmerkingen in de referentiedocumentatie voor deze API.

Opmerking

De opmerkingen in dit artikel zijn alleen van toepassing op .NET Framework en niet op moderne .NET.

De IsSecurityCritical, IsSecuritySafeCriticalen IsSecurityTransparent eigenschappen rapporteren het transparantieniveau van de dynamische methode, zoals bepaald door de Common Language Runtime (CLR). De combinaties van deze eigenschappen worden weergegeven in de volgende tabel:

Beveiligingsniveau IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent
Kritisch true false false
Veiligheid kritisch true true false
Transparent false false true

Het gebruik van deze eigenschappen is veel eenvoudiger dan het onderzoeken van de beveiligingsaantekeningen van een assembly en de bijbehorende typen, het controleren van het huidige vertrouwensniveau en het dupliceren van de regels van de runtime.

De transparantie van een dynamische methode is afhankelijk van de module waarmee deze is gekoppeld. Als de dynamische methode is gekoppeld aan een type in plaats van een module, hangt de transparantie ervan af van de module die het type bevat. Dynamische methoden hebben geen beveiligingsaantekeningen, zodat ze de standaardtransparantie voor de bijbehorende module krijgen toegewezen.

  • Anoniem gehoste dynamische methoden zijn altijd transparant, omdat de door het systeem geleverde module die deze bevat transparant is.

  • De transparantie van een dynamische methode die is gekoppeld aan een vertrouwde assembly (dat wil zeggen een sterk benoemde assembly die is geïnstalleerd in de globale assembly-cache) wordt beschreven in de volgende tabel.

    Aantekening van assembly Transparantie op niveau 1 Transparantie op niveau 2
    Volledig transparant Transparent Transparent
    Volledig kritiek Kritisch Kritisch
    Gemengde transparantie Transparent Transparent
    Beveiligingsagnostisch Veiligheidskritisch Kritisch

    Als u bijvoorbeeld een dynamische methode koppelt aan een type dat zich in mscorlib.dllbevindt, die gemengde transparantie op niveau 2 heeft, is de dynamische methode transparant en kan de kritieke code niet worden uitgevoerd. Zie Security-Transparent Code, Niveau 1 en Security-Transparent Code, Niveau 2 voor informatie over transparantieniveaus.

    Opmerking

    Het koppelen van een dynamische methode aan een module in een vertrouwde assembly op niveau 1 die beveiligingsneutraal is, zoals System.dll, staat geen uitbreiding van vertrouwen toe. Als de toekenningsset van de code die de dynamische methode aanroept, niet de toekenningsset van System.dll (dat wil gezegd volledig vertrouwen) bevat, SecurityException wordt gegenereerd wanneer de dynamische methode wordt aangeroepen.

  • De transparantie van een dynamische methode die is gekoppeld aan een gedeeltelijk vertrouwde assembly, is afhankelijk van de manier waarop de assembly wordt geladen. Als de assembly wordt geladen met gedeeltelijk vertrouwen (bijvoorbeeld in een gesandboxed toepassingsdomein), negeert de runtime de beveiligingsannotaties van de assembly. De assemblage en alle typen en leden, inclusief dynamische methoden, worden als transparant behandeld. De runtime besteedt alleen aandacht aan beveiligingsaantekeningen als de assembly met gedeeltelijke vertrouwensrelatie wordt geladen met volledige vertrouwensrelatie (bijvoorbeeld in het standaardtoepassingsdomein van een bureaubladtoepassing). In dat geval wijst de runtime volgens de aantekeningen van de assembly de standaardtransparantie-instellingen voor methoden toe aan de dynamische methode.

Zie Beveiligingsproblemen in Weerspiegelingszending voor meer informatie over reflectie-uitstoot en transparantie. Zie Beveiligingswijzigingen voor meer informatie over transparantie.