Condividi tramite


CA2144: Il codice Transparent non deve caricare assembly da matrici di byte

Articolo Valore
ID regola CA2144
Category Microsoft.Security
Modifica Interruzione

Causa

Un metodo trasparente carica un assembly da una matrice di byte usando uno dei metodi seguenti:

Nota

Questa regola è stata deprecata. Per altre informazioni, vedere Regole deprecate.

Descrizione regola

La revisione di sicurezza per il codice trasparente non è accurata come la revisione di sicurezza per il codice critico, perché il primo non può eseguire azioni sensibili per la sicurezza. Assembly caricati da una matrice di byte potrebbero non essere notati nel codice trasparente e quella matrice di byte potrebbe contenere codice critico o ancora più importante codice critico per la sicurezza, che deve essere controllato. Pertanto, il codice trasparente non deve caricare assembly da una matrice di byte.

Come correggere le violazioni

Per correggere una violazione di questa regola, contrassegnare il metodo che carica l'assembly con SecurityCriticalAttribute o l'attributo SecuritySafeCriticalAttribute .

Quando eliminare gli avvisi

Non escludere un avviso da questa regola.

Esempio

La regola viene attivata nel codice seguente perché un metodo trasparente carica un assembly da una matrice di byte.

using System;
using System.IO;
using System.Reflection;

namespace TransparencyWarningsDemo
{

    public class TransparentMethodsLoadAssembliesFromByteArraysClass
    {
        public void TransparentMethod()
        {
            byte[] assemblyBytes = File.ReadAllBytes("DependentAssembly.dll");

            // CA2144 violation - transparent code loading an assembly via byte array.  The fix here is to
            // either make TransparentMethod critical or safe-critical.
            Assembly dependent = Assembly.Load(assemblyBytes);
        }
    }
}