CA2144:透明程式碼不可以從位元組陣列載入組件
型別名稱 |
TransparentMethodsShouldNotLoadAssembliesFromByteArrays |
CheckId |
CA2144 |
分類 |
Microsoft.Security |
中斷變更 |
中斷 |
原因
透明方法會使用下列其中一種方法從位元組陣列載入組件:
規則描述
透明程式碼的安全性檢閱不如關鍵性程式碼的安全性檢閱徹底,因為透明程式碼無法執行安全性敏感動作。 透明程式碼中可能不會注意到從位元組陣列載入的組件,而該位元組陣列可能包含需要稽核之重大或更重要的安全關鍵性程式碼。 因此,透明的程式碼不應從位元組陣列載入組件。
如何修正違規
若要修正此規則的違規情形,請在載入組件的方法標記 SecurityCriticalAttribute 或 SecuritySafeCriticalAttribute 屬性。
隱藏警告的時機
請勿隱藏此規則的警告。
範例
下列程式碼會引發規則,因為透明的方法會從位元組陣列載入組件。
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);
}
}
}