CA2137: I metodi Transparent devono contenere solo IL verificabile
Articolo | Valore |
---|---|
ID regola | CA2137 |
Category | Microsoft.Security |
Modifica | Interruzione |
Causa
Un metodo contiene codice non verificabile o restituisce un tipo tramite riferimento.
Nota
Questa regola è stata deprecata. Per altre informazioni, vedere Regole deprecate.
Descrizione regola
Questa regola viene attivata sui tentativi tramite codice trasparente per la sicurezza per eseguire MSIL (Microsoft Intermediate Language) non verificabile. Tuttavia, la regola non contiene un verificatore di IL completo, ma usa invece regole euristiche per intercettare la maggior parte delle violazioni di verifica MSIL.
Per essere certi che il codice contenga solo MSIL verificabile, eseguire Peverify.exe (PEVerify Tool) nell'assembly. Eseguire PEVerify con l'opzione /transparent che limita l'output solo ai metodi trasparenti non verificabili che causano un errore. Se l'opzione /transparent non viene usata, PEVerify verifica anche i metodi critici che possono contenere codice non verificabile.
Come correggere le violazioni
Per correggere una violazione di questa regola, contrassegnare il metodo con l'attributo SecurityCriticalAttribute o SecuritySafeCriticalAttribute o o rimuovere il codice non verificabile.
Quando eliminare gli avvisi
Non escludere un avviso da questa regola.
Esempio
Il metodo in questo esempio usa codice non verificabile e deve essere contrassegnato con l'attributo SecurityCriticalAttribute o 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;
// }
}
}
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per