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