Compartilhar via


CA2144: Código Transparent deve não carregar assemblies de matrizes de bytes

TypeName

TransparentMethodsShouldNotLoadAssembliesFromByteArrays

CheckId

CA2144

<strong>Categoria</strong>

Microsoft.Security

Alteração significativa

Quebrando

Causa

Um método transparent carrega um assembly de uma matriz de bytes usando um dos seguintes métodos:

Descrição da regra

A análise de segurança para o código transparent não é o mais completo, como a revisão de segurança para o código critical, porque o código transparent não é possível realizar ações de segurança confidenciais.Módulos (assemblies) carregados a partir de uma matriz de bytes não pode ser observado no código transparente e a matriz de bytes que pode conter código crítico ou seguro para a mais importante crítico que precisam ser auditadas.Portanto, o código transparent não deve carregar assemblies de uma matriz de bytes.

Como corrigir violações

Para corrigir uma violação desta regra, marcar o método que está carregando o assembly com o SecurityCriticalAttribute ou o SecuritySafeCriticalAttribute atributo.

Quando suprimir avisos

Não suprimir um aviso da regra.

Exemplo

A regra é acionado com o código a seguir, porque um método transparent carrega um assembly de uma 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);
        }
    }
}