Avertissements de sécuritéSecurity warnings

Les avertissements de sécurité prennent en charge des bibliothèques et des applications plus sûres.Security warnings support safer libraries and applications. Ces avertissements contribuent à empêcher la présence de défauts de sécurité dans votre programme.These warnings help prevent security flaws in your program. Si vous désactivez chacun de ces avertissements, vous devez indiquer clairement le motif de l’opération dans le code et également en informer le responsable de la sécurité désigné pour votre projet de développement.If you disable any of these warnings, you should clearly mark the reason in code and also inform the designated security officer for your development project.

Dans cette sectionIn This Section

RègleRule DescriptionDescription
CA2100 : Recherchez les failles de sécurité dans des requêtes SQLCA2100: Review SQL queries for security vulnerabilities Une méthode définit la propriété System.Data.IDbCommand.CommandText à l’aide d’une chaîne générée à partir d’un argument de chaîne à la méthode.A method sets the System.Data.IDbCommand.CommandText property by using a string that is built from a string argument to the method. Cette règle suppose que l’argument de chaîne contient des entrées d’utilisateur.This rule assumes that the string argument contains user input. Une chaîne de commande SQL construite à partir d’entrées d’utilisateur est vulnérable aux attaques d’injection SQL.A SQL command string built from user input is vulnerable to SQL injection attacks.
CA2102 : Interceptez les exceptions non CLSCompliant dans des gestionnaires générauxCA2102: Catch non-CLSCompliant exceptions in general handlers Un membre dans un assembly qui n’est pas marqué avec RuntimeCompatibilityAttribute ou qui est marqué avec RuntimeCompatibility(WrapNonExceptionThrows = false) contient un bloc catch qui gère System.Exception et ne contient pas de bloc catch général immédiatement après.A member in an assembly that is not marked with the RuntimeCompatibilityAttribute or is marked RuntimeCompatibility(WrapNonExceptionThrows = false) contains a catch block that handles System.Exception and does not contain an immediately following general catch block.
CA2103 : Vérifiez la sécurité impérativeCA2103: Review imperative security Une méthode utilise la sécurité impérative et est susceptible de construire l’autorisation à l’aide d’informations d’état ou de valeurs de retour qui peuvent changer pendant que la demande est active.A method uses imperative security and might be constructing the permission by using state information or return values that can change while the demand is active. Utilisez la sécurité de déclaration dès que possible.Use declarative security whenever possible.
CA2104 : Ne déclarez pas les types référence mutables en lecture seuleCA2104: Do not declare read only mutable reference types Un type visible de l’extérieur contient un champ en lecture seule visible de l’extérieur qui constitue un type référence mutable.An externally visible type contains an externally visible read-only field that is a mutable reference type. Un type mutable est un type dont les données d’instance peuvent être modifiées.A mutable type is a type whose instance data can be modified.
CA2105 : Les champs de tableau ne doivent pas être en lecture seuleCA2105: Array fields should not be read only Lorsque vous appliquez le modificateur en lecture seule (ReadOnly en Visual Basic) à un champ qui contient un tableau, ce champ ne peut pas être modifié pour référencer un tableau différent.When you apply the read-only (ReadOnly in Visual Basic) modifier to a field that contains an array, the field cannot be changed to reference a different array. Toutefois, les éléments du tableau stockés dans un champ en lecture seule peuvent être modifiés.However, the elements of the array stored in a read-only field can be changed.
CA2106 : Sécurisez les assertionsCA2106: Secure asserts Une méthode déclare une autorisation et aucune vérification de sécurité n’est exécutée sur l’appelant.A method asserts a permission and no security checks are performed on the caller. L’assertion d’une autorisation de sécurité effectuée sans vérification de sécurité peut rendre votre code vulnérable et facile à exploiter.Asserting a security permission without performing any security checks can leave an exploitable security weakness in your code.
CA2107 : Passez en revue l’utilisation des méthodes Deny et PermitOnlyCA2107: Review deny and permit only usage La méthode PermitOnly et les actions de sécurité CodeAccessPermission.Deny doivent être uniquement utilisées par les développeurs ayant des connaissances approfondies de la sécurité du .NET Framework.Using the PermitOnly method and CodeAccessPermission.Deny security actions should be used only by those with an advanced knowledge of .NET Framework security. Le code qui utilise ces actions de sécurité doit subir une révision de sécurité.Code that uses these security actions should undergo a security review.
CA2108 : Vérifiez la sécurité déclarative dans les types de valeursCA2108: Review declarative security on value types Un type valeur public ou protégé est sécurisé par l’accès aux données ou des demandes de liaison.A public or protected value type is secured by Data Access or Link Demands.
CA2109 : Passez en revue les gestionnaires d’événements visiblesCA2109: Review visible event handlers Une méthode de gestion d’événements publique ou protégée a été détectée.A public or protected event-handling method was detected. Les méthodes de gestion d’événements ne doivent pas être exposées sauf nécessité absolue.Event-handling methods should not be exposed unless absolutely necessary.
CA2111 : Les pointeurs ne doivent pas être visiblesCA2111: Pointers should not be visible Un pointeur n’est ni privé, ni interne ni en lecture seule.A pointer is not private, internal, or read-only. Un code malveillant peut modifier la valeur du pointeur, autorisant potentiellement l’accès aux emplacements arbitraires en mémoire ou provoquant des défaillances des applications ou du système.Malicious code can change the value of the pointer, potentially allowing access to arbitrary locations in memory or causing application or system failures.
CA2112 : Les types sécurisés ne doivent pas exposer de champsCA2112: Secured types should not expose fields Un type public ou protégé contient des champs publics et est sécurisé par des demandes de liaison.A public or protected type contains public fields and is secured by Link Demands. Si un code a accès à une instance d’un type sécurisé par une demande de liaison, ce code n’a pas besoin de satisfaire la demande de liaison pour accéder aux champs du type.If code has access to an instance of a type that is secured by a link demand, the code does not have to satisfy the link demand to access the type's fields.
CA2114 : La sécurité de la méthode doit être un sur-ensemble du typeCA2114: Method security should be a superset of type Pour une même action, une méthode ne doit pas présenter de sécurité déclarative à la fois au niveau méthode et au niveau type.A method should not have both method-level and type-level declarative security for the same action.
CA2115 : Appelez GC.KeepAlive lorsque vous utilisez des ressources nativesCA2115: Call GC.KeepAlive when using native resources Cette règle détecte les erreurs susceptibles de se produire du fait qu’une ressource non managée est en cours de finalisation alors qu’elle est encore utilisée dans un code non managé.This rule detects errors that might occur because an unmanaged resource is being finalized while it is still being used in unmanaged code.
CA2116 : Les méthodes APTCA doivent appeler seulement des méthodes APTCACA2116: APTCA methods should only call APTCA methods Lorsque l’attribut APTCA (AllowPartiallyTrustedCallers) est présent sur un assembly doté d’une confiance totale, et lorsque cet assembly exécute un code dans un autre assembly qui n’autorise pas les appelants dotés d’une confiance partielle, il devient possible d’exploiter une faille dans la sécurité.When the APTCA (AllowPartiallyTrustedCallers) attribute is present on a fully trusted assembly, and the assembly executes code in another assembly that does not allow partially trusted callers, a security exploit is possible.
CA2117 : Les types APTCA doivent étendre seulement des types de base APTCACA2117: APTCA types should only extend APTCA base types Lorsque l’attribut APTCA (AllowPartiallyTrustedCallers) est présent sur un assembly doté d’une confiance totale et lorsqu’un type présent dans l’assembly hérite d’un type qui n’autorise pas les appelants partiellement approuvés, une exploitation de la sécurité devient possible.When the APTCA (AllowPartiallyTrustedCallers) attribute is present on a fully trusted assembly, and a type in the assembly inherits from a type that does not allow partially trusted callers, a security exploit is possible.
CA2118 : Passez en revue l’utilisation de SuppressUnmanagedCodeSecurityAttributeCA2118: Review SuppressUnmanagedCodeSecurityAttribute usage SuppressUnmanagedCodeSecurityAttribute modifie le comportement par défaut du système en matière de sécurité pour les membres qui exécutent le code non managé utilisant COM Interop ou l’appel de code non managé.SuppressUnmanagedCodeSecurityAttribute changes the default security system behavior for members that execute unmanaged code that uses COM interop or platform invocation. Cet attribut est essentiellement utilisé pour accroître les performances ; toutefois, les gains de performance s’accompagnent de risques substantiels pour la sécurité.This attribute is primarily used to increase performance; however, the performance gains come with significant security risks.
CA2119 : Scellez les méthodes qui satisfont les interfaces privéesCA2119: Seal methods that satisfy private interfaces Un type public pouvant être hérité fournit une implémentation de méthode substituable d’une interface interne (Friend en Visual Basic).An inheritable public type provides an overridable method implementation of an internal (Friend in Visual Basic) interface. Pour corriger une violation de cette règle, empêchez la méthode d’être substituée en dehors de l’assembly.To fix a violation of this rule, prevent the method from being overridden outside the assembly.
CA2120 : Sécurisez les constructeurs de sérialisationCA2120: Secure serialization constructors Ce type possède un constructeur qui accepte un objet System.Runtime.Serialization.SerializationInfo et un objet System.Runtime.Serialization.StreamingContext (la signature du constructeur de sérialisation).This type has a constructor that takes a System.Runtime.Serialization.SerializationInfo object and a System.Runtime.Serialization.StreamingContext object (the signature of the serialization constructor). Ce constructeur n’est pas sécurisé par une vérification de la sécurité, mais au moins un des constructeurs normaux dans le type est sécurisé.This constructor is not secured by a security check, but one or more of the regular constructors in the type are secured.
CA2121 : Les constructeurs statiques doivent être privésCA2121: Static constructors should be private Le système appelle le constructeur statique avant la création de la première instance du type ou le référencement de tout membre statique.The system calls the static constructor before the first instance of the type is created or any static members are referenced. Si un constructeur statique n’est pas privé, il peut être appelé par un code autre que le système.If a static constructor is not private, it can be called by code other than the system. Selon les opérations effectuées dans le constructeur, cette possibilité peut provoquer un comportement inattendu.Depending on the operations that are performed in the constructor, this can cause unexpected behavior.
CA2122 : N’exposez pas indirectement des méthodes avec des demandes de liaisonCA2122: Do not indirectly expose methods with link demands Un membre public ou protégé a des demandes de liaison et est appelé par un membre qui ne procède à aucune vérification de la sécurité.A public or protected member has Link Demands and is called by a member that does not perform any security checks. Une demande de liaison vérifie uniquement les autorisations de l’appelant immédiat.A link demand checks the permissions of the immediate caller only.
CA2123 : Les demandes de liaison de substitution doivent être identiques au composant de baseCA2123: Override link demands should be identical to base Cette règle met en correspondance une méthode et sa méthode de base, qui est soit une interface, soit une méthode virtuelle dans un autre type, puis compare les demandes de liaison sur chacune.This rule matches a method to its base method, which is either an interface or a virtual method in another type, and then compares the link demands on each. Si cette règle est violée, un appelant malveillant peut ignorer la demande de liaison simplement en appelant la méthode non protégée.If this rule is violated, a malicious caller can bypass the link demand just by calling the unsecured method.
CA2124 : Incluez dans un wrapper les clauses finally vulnérables dans un bloc try externeCA2124: Wrap vulnerable finally clauses in outer try Une méthode publique ou protégée contient un bloc try/finally.A public or protected method contains a try/finally block. Le bloc finally semble réinitialiser l’état de sécurité et n’est lui-même placé dans aucun bloc finally.The finally block appears to reset the security state and is not itself enclosed in a finally block.
CA2126 : Les demandes de liaison de types nécessitent des demandes d’héritageCA2126: Type link demands require inheritance demands Un type unsealed public est protégé par une demande de liaison et a une méthode substituable.A public unsealed type is protected with a link demand and has an overridable method. Ni le type ni la méthode n’est protégé par une demande d’héritage.Neither the type nor the method is protected with an inheritance demand.
CA2130 : Les constantes critiques de sécurité doivent être transparentesCA2130: Security critical constants should be transparent La mise en application de la transparence n’est pas effectuée pour les valeurs de constante car les compilateurs alignent les valeurs de constante afin qu’aucune recherche ne soit requise au moment de l’exécution.Transparency enforcement is not enforced for constant values because compilers inline constant values so that no lookup is required at run time. Les champs constants doivent être transparents de sécurité (security-transparent) afin que les relecteurs de code ne supposent pas que le code transparent ne peut pas accéder à la constante.Constant fields should be security transparent so that code reviewers do not assume that transparent code cannot access the constant.
CA2131 : Les types critiques de sécurité ne peuvent pas participer à l’équivalence des typesCA2131: Security critical types may not participate in type equivalence Un type participe à l’équivalence de type et le type lui-même, ou un membre ou champ du type, est marqué avec l’attribut SecurityCriticalAttribute.A type participates in type equivalence and either the type itself, or a member or field of the type, is marked with the SecurityCriticalAttribute attribute. Cette règle se déclenche sur tout type ou type critique contenant des méthodes critiques ou des champs qui participent à l’équivalence de type.This rule fires on any critical types or types that contain critical methods or fields that are participating in type equivalence. Lorsque le CLR détecte un tel type, il ne peut pas le charger avec une exception TypeLoadException au moment de l’exécution.When the CLR detects such a type, it fails to load it with a TypeLoadException at run time. En général, cette règle se déclenche uniquement lorsque les utilisateurs implémentent l’équivalence de type manuellement plutôt qu’en comptant sur tlbimp et les compilateurs pour faire l’équivalence de type.Typically, this rule fires only when users implement type equivalence manually rather than by relying on tlbimp and the compilers to do the type equivalence.
CA2132 : Les constructeurs par défaut doivent être au moins aussi critiques que les constructeurs par défaut de type de baseCA2132: Default constructors must be at least as critical as base type default constructors Les types et les membres qui possèdent l’attribut SecurityCriticalAttribute ne peuvent pas être utilisés par le code d’application Silverlight.Types and members that have the SecurityCriticalAttribute cannot be used by Silverlight application code. Les types et membres critiques de sécurité (security-critical) peuvent être uniquement utilisés par le code de confiance dans la bibliothèque de classes .NET Framework pour Silverlight.Security-critical types and members can be used only by trusted code in the .NET Framework for Silverlight class library. Dans la mesure où une construction publique ou protégée dans une classe dérivée doit avoir la même transparence ou une transparence supérieure à sa classe de base, une classe dans une application ne peut pas être dérivée d’une classe marquée SecurityCritical.Because a public or protected construction in a derived class must have the same or greater transparency than its base class, a class in an application cannot be derived from a class marked SecurityCritical.
CA2133 : Les délégués doivent lier les méthodes avec une transparence cohérenteCA2133: Delegates must bind to methods with consistent transparency Cet avertissement se déclenche sur une méthode qui lie un délégué marqué à l’aide de SecurityCriticalAttribute à une méthode transparente ou marquée à l’aide de SecuritySafeCriticalAttribute.This warning fires on a method that binds a delegate that is marked with the SecurityCriticalAttribute to a method that is transparent or that is marked with the SecuritySafeCriticalAttribute. L’avertissement déclenche également une méthode qui lie un délégué transparent ou critique sécurisé à une méthode critique.The warning also fires a method that binds a delegate that is transparent or safe-critical to a critical method.
CA2134 : La transparence des méthodes doit rester cohérente lors du remplacement des méthodes de baseCA2134: Methods must keep consistent transparency when overriding base methods Cette règle se déclenche lorsqu’une méthode marquée à l’aide de SecurityCriticalAttribute substitue une méthode qui est transparente ou marquée à l’aide de SecuritySafeCriticalAttribute.This rule fires when a method marked with the SecurityCriticalAttribute overrides a method that is transparent or marked with the SecuritySafeCriticalAttribute. Cette règle se déclenche également lorsqu’une méthode qui est transparente ou marquée à l’aide de SecuritySafeCriticalAttribute substitue une méthode marquée à l’aide de SecurityCriticalAttribute.The rule also fires when a method that is transparent or marked with the SecuritySafeCriticalAttribute overrides a method that is marked with a SecurityCriticalAttribute. La règle est appliquée lors de la substitution d’une méthode virtuelle ou de l’implémentation d’une interface.The rule is applied when overriding a virtual method or implementing an interface.
CA2135 : Les assemblys de niveau 2 ne doivent pas contenir de LinkDemandsCA2135: Level 2 assemblies should not contain LinkDemands L’utilisation de LinkDemands est déconseillée dans l’ensemble de règles de sécurité de niveau 2.LinkDemands are deprecated in the level 2 security rule set. Au lieu d’utiliser LinkDemands pour implémenter la sécurité au moment de la compilation juste-à-temps (JIT), marquez les méthodes, types et champs avec l’attribut SecurityCriticalAttribute.Instead of using LinkDemands to enforce security at just-in-time (JIT) compilation time, mark the methods, types, and fields with the SecurityCriticalAttribute attribute.
CA2136 : Les membres ne doivent pas avoir d’annotations de transparence en conflitCA2136: Members should not have conflicting transparency annotations Les attributs de transparence sont appliqués à partir d’éléments de code de plus grande portée à des éléments de plus petite portée.Transparency attributes are applied from code elements of larger scope to elements of smaller scope. Les attributs de transparence d’éléments de code avec une plus grande portée sont prioritaires sur les attributs de transparence des éléments de code contenus dans le premier élément.The transparency attributes of code elements with larger scope take precedence over transparency attributes of code elements that are contained in the first element. Par exemple, une classe marquée à l’aide de l’attribut SecurityCriticalAttribute ne peut pas contenir de méthode marquée à l’aide de l’attribut SecuritySafeCriticalAttribute.For example, a class that is marked with the SecurityCriticalAttribute attribute cannot contain a method that is marked with the SecuritySafeCriticalAttribute attribute.
CA2137 : Les méthodes transparentes doivent contenir uniquement des IL vérifiablesCA2137: Transparent methods must contain only verifiable IL Une méthode contient du code non vérifiable ou retourne un type par référence.A method contains unverifiable code or returns a type by reference. Cette règle se déclenche lorsque le code transparent de sécurité tente d’exécuter du code MSIL (Microsoft Intermediate Language) non vérifiable.This rule fires on attempts by security transparent code to execute unverifiable MSIL (Microsoft Intermediate Language). Toutefois, la règle ne contient pas de vérificateur IL (Intermediate Language) complet, et à la place utilise l’heuristique pour intercepter la plupart des violations de vérification MSIL.However, the rule does not contain a full IL verifier, and instead uses heuristics to catch most violations of MSIL verification.
CA2138 : Les méthodes transparentes ne doivent pas appeler les méthodes avec l’attribut SuppressUnmanagedCodeSecurityCA2138: Transparent methods must not call methods with the SuppressUnmanagedCodeSecurity attribute Une méthode transparente de sécurité appelle une méthode qui est marquée à l’aide de l’attribut SuppressUnmanagedCodeSecurityAttribute.A security transparent method calls a method that is marked with the SuppressUnmanagedCodeSecurityAttribute attribute.
CA2139 : Les méthodes transparentes ne peuvent pas utiliser l’attribut HandleProcessCorruptingExceptionsCA2139: Transparent methods may not use the HandleProcessCorruptingExceptions attribute Cette règle se déclenche sur toute méthode transparente qui essaie de gérer un processus d’exception qui endommage à l’aide de l’attribut HandleProcessCorruptedStateExceptionsAttribute.This rule fires on any method that's transparent and attempts to handle a process corrupting exception by using the HandleProcessCorruptedStateExceptionsAttribute attribute. Un exception qui endommage de processus est une classification d’exception CLR version 4.0 des exceptions comme AccessViolationException.A process corrupting exception is a CLR version 4.0 exception classification of exceptions such as AccessViolationException. L’attribut HandleProcessCorruptedStateExceptionsAttribute peut uniquement être utilisé par des méthodes critiques de sécurité et sera ignoré s’il s’applique à une méthode transparente.The HandleProcessCorruptedStateExceptionsAttribute attribute may only be used by security critical methods, and will be ignored if it is applied to a transparent method.
CA2140 : Le code transparent ne doit référencer des éléments critiques de sécuritéCA2140: Transparent code must not reference security critical items Les méthodes marquées avec SecurityTransparentAttribute appellent des membres non publics marqués en tant que SecurityCritical.Methods that are marked with SecurityTransparentAttribute call non-public members that are marked as SecurityCritical. Cette règle analyse toutes les méthodes et les types dans un assembly qui est transparent et critiques et elle signale tous les appels du code transparent au code critique non public qui ne sont pas marqués comme SecurityTreatAsSafe.This rule analyzes all methods and types in an assembly that is mixed transparent and critical, and flags any calls from transparent code to non-public critical code that are not marked SecurityTreatAsSafe.
CA2141 : Les méthodes transparentes ne satisfont pas les LinkDemandsCA2141:Transparent methods must not satisfy LinkDemands Une méthode transparente de sécurité appelle une méthode dans un assembly qui n’est pas marqué à l’aide de l’attribut APTCA (AllowPartiallyTrustedCallersAttribute), ou une méthode transparente de sécurité satisfait une demande LinkDemand pour un type ou une méthode.A security transparent method calls a method in an assembly that is not marked with the AllowPartiallyTrustedCallersAttribute (APTCA) attribute, or a security transparent method satisfies a LinkDemand for a type or a method.
CA2142 : Le code transparent ne doit pas être protégé avec des LinkDemandsCA2142: Transparent code should not be protected with LinkDemands Cette règle se déclenche sur les méthodes transparentes qui requièrent l’accès de LinkDemands.This rule fires on transparent methods which require LinkDemands to access them. Le code transparent de sécurité ne doit pas être responsable de la vérification de la sécurité d’une opération. Par conséquent, il ne doit pas demander d’autorisations.Security transparent code should not be responsible for verifying the security of an operation, and therefore should not demand permissions.
CA2143 : Les méthodes transparentes ne doivent pas utiliser de demandes de sécuritéCA2143: Transparent methods should not use security demands Le code transparent de sécurité ne doit pas être responsable de la vérification de la sécurité d’une opération. Par conséquent, il ne doit pas demander d’autorisations.Security transparent code should not be responsible for verifying the security of an operation, and therefore should not demand permissions. Le code transparent de sécurité doit utiliser des demandes complètes pour prendre des décisions de sécurité et le code critique sécurisé ne doit pas dépendre du code transparent pour l’exécution de ces demandes.Security transparent code should use full demands to make security decisions and safe-critical code should not rely on transparent code to have made the full demand.
CA2144 : Le code transparent ne doit pas charger d’assemblys depuis des tableaux d’octetsCA2144: Transparent code should not load assemblies from byte arrays La révision de sécurité du code transparent n’est pas aussi complète que la révision de sécurité du code critique, car le code transparent ne peut pas exécuter d’actions relatives à la sécurité.The security review for transparent code is not as thorough as the security review for critical code, because transparent code cannot perform security sensitive actions. Les assemblys chargés à partir d’un tableau d’octets peuvent ne pas être remarqués dans du code transparent, et ce tableau d’octets peut contenir du code critique, voire critique de sécurité, qui doit être audité.Assemblies loaded from a byte array might not be noticed in transparent code, and that byte array might contain critical, or more importantly safe-critical code, that does need to be audited.
CA2145 : Les méthodes transparentes ne doivent pas être décorées avec SuppressUnmanagedCodeSecurityAttributeCA2145: Transparent methods should not be decorated with the SuppressUnmanagedCodeSecurityAttribute Les méthodes décorées avec l’attribut SuppressUnmanagedCodeSecurityAttribute ont un LinkDemand implicite sur toute méthode qui l’appelle.Methods decorated with the SuppressUnmanagedCodeSecurityAttribute attribute have an implicit LinkDemand placed upon any method that calls it. Ce LinkDemand requiert que le code appelant soit critique de sécurité.This LinkDemand requires that the calling code be security critical. Le marquage de la méthode qui utilise SuppressUnmanagedCodeSecurity avec l’attribut SecurityCriticalAttribute rend cette spécification plus évidente pour les appelants de la méthode.Marking the method that uses SuppressUnmanagedCodeSecurity with the SecurityCriticalAttribute attribute makes this requirement more obvious for callers of the method.
CA2146 : Les types doivent être au moins aussi critiques que leurs types de base et leurs interfacesCA2146: Types must be at least as critical as their base types and interfaces Cette règle se déclenche lorsqu’un type dérivé a un attribut de transparence de sécurité qui n’est pas aussi critique que son type de base ou l’interface implémentée.This rule fires when a derived type has a security transparency attribute that is not as critical as its base type or implemented interface. Seuls les types critiques peuvent dériver des types de base critiques ou implémenter des interfaces critiques, et seuls les types critiques ou critiques sécurisés peuvent dériver des types de base critiques sécurisés ou implémenter des interfaces critiques sécurisées.Only critical types can derive from critical base types or implement critical interfaces, and only critical or safe-critical types can derive from safe-critical base types or implement safe-critical interfaces.
CA2147 : Les méthodes transparentes ne peuvent pas utiliser d’assertions de sécuritéCA2147: Transparent methods may not use security asserts Cette règle analyse toutes les méthodes et tous les types dans un assembly qui est entièrement transparent ou mi-transparent et mi-critique, et elle signale toutes les utilisations déclaratives ou impératives d’Assert.This rule analyzes all methods and types in an assembly that is either 100% transparent or mixed transparent/critical, and flags any declarative or imperative use of Assert.
CA2149 : Les méthodes transparentes ne doivent pas appeler du code natifCA2149: Transparent methods must not call into native code Cette règle se déclenche sur toute méthode transparente qui appelle directement en code natif, par exemple, via un appel P/Invoke.This rule fires on any transparent method that calls directly into native code, for example, through a P/Invoke. Les violations de cette règle provoquent une exception MethodAccessException dans le modèle de transparence de niveau 2, et une demande complète pour le code UnmanagedCode dans le modèle de transparence de niveau 1.Violations of this rule lead to a MethodAccessException in the level 2 transparency model, and a full demand for UnmanagedCode in the level 1 transparency model.
CA2151 : Les champs avec des types critiques doivent être des champs critiques de sécuritéCA2151: Fields with critical types should be security critical Pour utiliser les types critiques de sécurité, le code qui référence le type doit être critique de sécurité ou critique sécurisé.To use security critical types, the code that references the type must be either security critical or security safe critical. Ceci est vrai même si la référence est indirecte.This is true even if the reference is indirect. Par conséquent, un champ transparent de sécurité ou critique sécurisé est trompeur, car le code transparent ne pourra toujours pas accéder au champ.Therefore, having a security transparent or security safe critical field is misleading because transparent code will still be unable to access the field.
Déclarations ca5122 : P/Invoke ne doivent pas être sécurisées critiquesCA5122 P/Invoke declarations should not be safe critical Les méthodes sont marquées SecuritySafeCritical lorsqu’elles effectuent une opération relative à la sécurité, mais elle peuvent également être utilisées en toute sécurité par du code transparent.Methods are marked as SecuritySafeCritical when they perform a security sensitive operation, but are also safe to be used by transparent code. Le code transparent peut ne jamais appeler directement du code natif via P/Invoke.Transparent code may never directly call native code through a P/Invoke. Par conséquent, marquer une méthode P/Invoke comme critique sécurisé ne permet pas au code transparent de l’appeler et s’avère trompeur pour l’analyse de sécurité.Therefore, marking a P/Invoke as security safe critical will not enable transparent code to call it, and is misleading for security analysis.
CA2153 : Évitez la gestion des exceptions d’état endommagéCA2153: Avoid Handling Corrupted State Exceptions Endommagé des Exceptions d’état (CSE) indiquent que la mémoire corruption existe dans votre processus.Corrupted State Exceptions (CSE) indicate that memory corruption exists in your process. Le fait d’intercepter ces exceptions au lieu d’autoriser le processus à se bloquer peut engendrer des failles de sécurité si une personne malveillante réussit à placer une attaque dans la région de la mémoire endommagée.Catching these rather than allowing the process to crash can lead to security vulnerabilities if an attacker can place an exploit into the corrupted memory region.
CA3075 : Traitement DTD non sécuriséCA3075: Insecure DTD Processing Si vous utilisez des instances de DTDProcessing non sécurisées ou référencez des sources d’entités externes, l’analyseur peut accepter une entrée non fiable et divulguer des informations sensibles à des personnes malveillantes.If you use insecure DTDProcessing instances or reference external entity sources, the parser may accept untrusted input and disclose sensitive information to attackers.
CA3076 : Exécution non sécurisée de script XSLTCA3076: Insecure XSLT Script Execution Si vous exécutez le langage XSLT (Extensible Stylesheet Language Transformations) dans les applications .NET de manière non sécurisée, le processeur peut résoudre les références URI non fiables qui pourraient divulguer des informations sensibles à des personnes malveillantes, ce qui aboutirait à des attaques par déni de service et intersites.If you execute Extensible Stylesheets Language Transformations (XSLT) in .NET applications insecurely, the processor may resolve untrusted URI references that could disclose sensitive information to attackers, leading to Denial of Service and Cross-Site attacks.
CA3077 : traitement non sécurisé dans la conception d’API, le document XML et le lecteur de texte XMLCA3077: Insecure Processing in API Design, XML Document and XML Text Reader Lors de la conception d’une API dérivée de XMLDocument et XMLTextReader, tenez compte de DtdProcessing.When designing an API derived from XMLDocument and XMLTextReader, be mindful of DtdProcessing. L’utilisation d’instances de DTDProcessing non sécurisées lors de la référence ou la résolution de sources d’entités externes ou la définition de valeurs non sécurisées dans le code XML peut aboutir à la divulgation d’informations.Using insecure DTDProcessing instances when referencing or resolving external entity sources or setting insecure values in the XML may lead to information disclosure.
CA3147 : Marquer les gestionnaires de verbe avec ValidateAntiForgeryTokenCA3147: Mark verb handlers with ValidateAntiForgeryToken Lorsque vous concevez un contrôleur ASP.NET MVC, tenez compte des attaques par falsification de requête intersites.When designing an ASP.NET MVC controller, be mindful of cross-site request forgery attacks. Une attaque de falsification de requête intersites peut envoyer des requêtes malveillantes à partir d’un utilisateur authentifié à votre contrôleur ASP.NET MVC.A cross-site request forgery attack can send malicious requests from an authenticated user to your ASP.NET MVC controller.