Compartir a través de


CA2144: El código transparente no debe cargar ensamblados desde matrices de bytes

TypeName

TransparentMethodsShouldNotLoadAssembliesFromByteArrays

Identificador de comprobación

CA2144

Categoría

Microsoft.Security

Cambio problemático

Problemático

Motivo

Un método transparente carga un ensamblado desde una matriz de bytes utilizando uno de los métodos siguientes:

Descripción de la regla

La revisión de seguridad del código transparente no es tan exhaustiva como la revisión de seguridad del código crítico, porque el código transparente no puede realizar acciones que afectan a la seguridad.Los ensamblados cargados desde una matriz de bytes podrían no distinguirse en el código transparente, y esa matriz de bytes podría contener código importante crítico para la seguridad, que no hace falta auditar.Por consiguiente, el código transparente no debería cargar los ensamblados de una matriz de bytes.

Cómo corregir infracciones

Para corregir una infracción de esta regla, marque el método que está cargando el ensamblado con el atributo SecuritySafeCriticalAttribute o SecurityCriticalAttribute.

Cuándo suprimir advertencias

No suprima las advertencias de esta regla.

Ejemplo

La regla se desencadena en el código siguiente porque un método transparente carga un ensamblado de una matriz de bytes.

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);
        }
    }
}