Freigeben über


CA2144: Transparenter Code darf keine Assemblys aus Bytearrays laden

TypeName

TransparentMethodsShouldNotLoadAssembliesFromByteArrays

CheckId

CA2144

Kategorie

Microsoft.Security

Unterbrechende Änderung

Breaking

Ursache

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

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 dürfen mit transparentem Code keine Assemblys aus einem Bytearray geladen werden.

Behandeln von Verstößen

Um eine Verletzung dieser Regel zu korrigieren, markieren Sie die Methode, mit der die Assembly geladen wird, mit dem SecurityCriticalAttribute-Attribut oder dem SecuritySafeCriticalAttribute-Attribut.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Beispiel

Die Regel wird für den 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);
        }
    }
}