Compartilhar via


CA2144: o código transparente não deve carregar assemblies a partir de matrizes de bytes

TypeName

TransparentMethodsShouldNotLoadAssembliesFromByteArrays

CheckId

CA2144

Categoria

Microsoft.Security

Alteração Significativa

Quebra

Causa

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

Descrição da Regra

A revisão de segurança para o código transparente não é tão completa quanto a revisão de segurança para o código crítico, porque o código transparente não pode executar ações confidenciais de segurança.Os assemblies carregados de uma matriz de bytes não podem ser anotados no código transparente, e a matriz de bytes pode conter código crítico ou, mais importante seguro- crítico, que precisa ser auditado.Em virtude disso, o código transparente não deve carregar os assemblies SMO uma matriz de bytes.

Como Corrigir Violações

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

Quando Suprimir Alertas

Não elimine um alerta desta regra.

Exemplo

Aciona de regra no seguinte código porque um método transparente 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);
        }
    }
}