CA2139 : Les méthodes transparentes ne peuvent pas utiliser l'attribut HandleProcessCorruptingExceptions
Élément | Valeur |
---|---|
ID de la règle | CA2139 |
Category | Microsoft.Security |
Modification avec rupture | Rupture |
Cause
Une méthode transparente est marquée avec l’attribut HandleProcessCorruptedStateExceptionsAttribute.
Notes
Cette règle est déconseillée. Pour plus d’informations, consultez Règles dépréciées.
Description de la règle
Cette règle déclenche toute méthode transparente qui essaie de gérer une exception qui endommage un processus à l’aide de l’attribut HandleProcessCorruptedStateExceptionsAttribute. Une exception qui endommage un processus est une classification d’exception CLR version 4.0 des exceptions comme 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. Pour gérer les exceptions d’altération des processus, cette méthode doit devenir essentielle pour la sécurité ou critique pour la sécurité.
Comment corriger les violations
Pour corriger une violation de cette règle, supprimez l’attribut HandleProcessCorruptedStateExceptionsAttribute ou marquez la méthode avec l’attribut SecurityCriticalAttribute ou SecuritySafeCriticalAttribute.
Quand supprimer les avertissements
Ne supprimez aucun avertissement de cette règle.
Exemple
Dans cet exemple, une méthode transparente est marquée avec l’attribut HandleProcessCorruptedStateExceptionsAttribute et échoue à la règle. La méthode doit également être marquée avec l’attribut SecurityCriticalAttribute ou SecuritySafeCriticalAttribute.
using System;
using System.Runtime.InteropServices;
using System.Runtime.ExceptionServices;
using System.Security;
namespace TransparencyWarningsDemo
{
public class HandleProcessCorruptedStateExceptionClass
{
[DllImport("SomeModule.dll")]
private static extern void NativeCode();
// CA2139 violation - transparent method attempting to handle a process corrupting exception
[HandleProcessCorruptedStateExceptions]
public void HandleCorruptingExceptions()
{
try
{
NativeCode();
}
catch (AccessViolationException) { }
}
}
}
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour