Partager via


Les assemblys Security Transparent ne doivent pas contenir de code critique de sécurité

Mise à jour : novembre 2007

TypeName

SecurityTransparentAssembliesShouldNotContainSecurityCriticalCode

CheckId

CA2127

Catégorie

Microsoft.Security

Modification avec rupture

Oui

Cause

Le code critique ne peut pas apparaître dans un assembly entièrement transparent.

Description de la règle

Cette règle analyse les assemblys entièrement transparents pour toutes les annotations SecurityCritical au niveau du type, du champ et de la méthode. Cette règle est utile car elle indique le code qui existe dans un assembly entièrement transparent. Le code d'un assembly entièrement transparent déclenche une exception de sécurité ou un comportement inattendu au moment de l'exécution.

La version .NET Framework 2.0 a introduit une fonctionnalité appelée transparence. Les méthodes, les champs, les interfaces, les classes et les types individuels peuvent être transparents ou critiques.

Le code transparent n'est pas autorisé à élever les privilèges de sécurité. Par conséquent, toutes les autorisations accordées ou sollicitées sont automatiquement passées du code à l'appelant ou à l'AppDomain d'hôte. Les exemples d'"élévations" incluent les assertions, les LinkDemands, l'attribut SuppressUnmanagedCode et le code "unsafe".

Un assembly peut être entièrement transparent, entièrement critique ou mi-transparent, mi-critique.

Pour marquer un assembly comme entièrement transparent, ajoutez l'attribut de niveau assembly :

 [assembly:System.Security.SecurityTransparent]

Pour marquer un assembly comme entièrement critique, ajoutez l'attribut de niveau assembly :

[assembly:System.Security.SecurityCritical(System.Security.SecurityCriticalScope.Everything)]

Pour marquer un assembly comme mi-transparent, mi critique, ajoutez l'attribut de niveau assembly :

 [assembly:System.Security.SecurityCritical]

Le code transparent ne peut pas apparaître dans un assembly entièrement critique et le code critique ne peut pas apparaître dans un assembly entièrement transparent.

Comment corriger les violations

Pour résoudre le problème, marquez l'assembly comme mi-transparent, mi-critique ou supprimez l'attribut SecurityCritical du code signalé.

Quand supprimer les avertissements

Ne supprimez aucun message de cette règle.