CA2144: Il codice Transparent non deve caricare assembly da matrici di byte
TypeName |
TransparentMethodsShouldNotLoadAssembliesFromByteArrays |
CheckId |
CA2144 |
Category |
Microsoft.Security |
Breaking Change |
Breaking |
Causa
Un metodo Trasparent carica un assembly da una matrice di byte utilizzando uno dei metodi seguenti:
Descrizione della 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 l'attributo SecurityCriticalAttribute o SecuritySafeCriticalAttribute.
Esclusione di avvisi
Non escludere un avviso da questa regola.
Esempio
La regola funziona nel 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);
}
}
}