Freigeben über


CA2144: Transparenter Code darf keine Assemblys aus Bytearrays laden.

Element Wert
RuleId CA2144
Category Microsoft.Security
Unterbrechende Änderung Breaking

Ursache

Eine transparente Methode lädt eine Assembly mithilfe einer der folgenden Methoden aus einem Bytearray:

Hinweis

Diese Regel wurde als veraltet markiert. Weitere Informationen finden Sie unter Veraltete Regeln.

Regelbeschreibung

Die Sicherheitsüberprüfung für transparenten Code ist nicht so umfassend wie die Sicherheitsüberprüfung für wichtigen Code, da in transparentem Code keine sicherheitsrelevanten Aktionen ausgeführt werden können. Aus einem Bytearray geladene Assemblys werden in transparentem Code eventuell nicht erkannt, und dieses Bytearray könnte wichtigen oder sicherheitsgeschützten Code enthalten, der überwacht werden muss. Daher sollte transparenter Code keine Assemblys aus einem Bytearray laden.

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, markieren Sie die Methode, die die Assembly lädt, mit dem SecurityCriticalAttribute- oder SecuritySafeCriticalAttribute-Attribut.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Beispiel

Die Regel wird im folgenden Code ausgelöst, da eine transparente Methode eine Assembly aus einem Bytearray lädt.

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