CA2137 : Les méthodes transparentes doivent contenir uniquement des IL vérifiables
Élément | Valeur |
---|---|
ID de la règle | CA2137 |
Category | Microsoft.Security |
Modification avec rupture | Rupture |
Cause
Une méthode contient du code non vérifiable ou retourne un type par référence.
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 se déclenche lorsque le code transparent de sécurité tente d’exécuter du code MSIL (Microsoft Intermediate Language) non vérifiable. 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.
Pour être certain que votre code contient uniquement du code MSIL vérifiable, exécutez Peverify.exe (outil PEVerify) sur votre assembly. Exécutez PEVerify avec l’option /transparent qui limite la sortie aux seules méthodes transparentes non vérifiables susceptibles de provoquer une erreur. Si l’option /transparent n’est pas utilisée, PEVerify vérifie également les méthodes critiques qui sont autorisées à contenir du code non vérifiable.
Comment corriger les violations
Pour corriger une infraction à cette règle, marquez la méthode avec l’attribut SecurityCriticalAttribute ou SecuritySafeCriticalAttribute, ou supprimez le code non vérifiable.
Quand supprimer les avertissements
Ne supprimez aucun avertissement de cette règle.
Exemple
La méthode de cet exemple utilise du code non vérifiable et doit être marquée avec l’attribut SecurityCriticalAttribute ou SecuritySafeCriticalAttribute.
using System;
using System.Security;
namespace TransparencyWarningsDemo
{
public class UnverifiableMethodClass
{
// CA2137 violation - transparent method with unverifiable code. This method should become critical or
// safe critical
// public unsafe byte[] UnverifiableMethod(int length)
// {
// byte[] bytes = new byte[length];
// fixed (byte* pb = bytes)
// {
// *pb = (byte)length;
// }
// return bytes;
// }
}
}
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