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