Sdílet prostřednictvím


CA2144: Transparentní kód nesmí načítat sestavení z bajtových polí

TypeName

TransparentMethodsShouldNotLoadAssembliesFromByteArrays

CheckId

CA2144

Kategorie

Microsoft.Security

Narušující změna

Narušující

Příčina

Transparentní metoda načte sestavení z pole bajtů pomocí jedné z následujících metod:

Popis pravidla

Přezkoumání zabezpečení transparentního kódu není tak důkladné jako přezkoumání zabezpečení kritického kódu, protože transparentní kód nemůže provádět akce citlivé na zabezpečení.Sestavení, která jsou načtena z pole bajtů, nemohou být v transparentním kódu zaznamenána, takové pole bajtů může obsahovat kritický kód nebo ještě důlěžitější kód kritický na zabezpečení, který nepotřebuje být auditován.Proto by transparentní kód neměl sestavení načítat z pole bajtů.

Jak vyřešit porušení

Porušení tohoto pravidla vyřešíte označením metody, která načítá sestavení s atributem SecurityCriticalAttribute nebo SecuritySafeCriticalAttribute.

Kdy potlačit upozornění

Nepotlačujte upozornění na toto pravidlo.

Příklad

Pravidlo je na následující kódu vyvoláno proto, že transparentní metoda načítá sestavení z pole bajtů.

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