CA2315:請勿使用不安全的還原序列化程式 ObjectStateFormatter

屬性
規則識別碼 CA2315
標題 請勿使用不安全的還原序列化程式 ObjectStateFormatter
類別 安全性
修正程式是中斷或非中斷 不中斷
預設在 .NET 8 中啟用 No

原因

System.Web.UI.ObjectStateFormatter已呼叫或參考還原序列化方法。

檔案描述

還原序列化未受信任資料時,不安全的還原序列化程式會易受攻擊。 攻擊者可以修改序列化的資料,以包含非預期的型別,以插入具有惡意副作用的物件。 例如,對不安全還原序列化程式的攻擊可能會在基礎作業系統上執行命令、透過網路通訊或刪除檔案。

此規則會 System.Web.UI.ObjectStateFormatter 尋找還原序列化方法呼叫或參考。

如何修正違規

隱藏警告的時機

如果下列狀況,可以放心地隱藏此規則的警告:

  • 您知道輸入是受信任的。 請考慮應用程式的信任界限和資料流程可能會隨著時間而變更。
  • 您已在如何修正違規 採取其中一項預防措施。

虛擬程式碼範例

違規

using System.IO;
using System.Web.UI;

public class ExampleClass
{
    public object MyDeserialize(byte[] bytes)
    {
        ObjectStateFormatter formatter = new ObjectStateFormatter();
        return formatter.Deserialize(new MemoryStream(bytes));
    }
}
Imports System.IO
Imports System.Web.UI

Public Class ExampleClass
    Public Function MyDeserialize(bytes As Byte()) As Object
        Dim formatter As ObjectStateFormatter = New ObjectStateFormatter()
        Return formatter.Deserialize(New MemoryStream(bytes))
    End Function
End Class