CA5367:不要使用指標欄位串行化類型

屬性
規則識別碼 CA5367
標題 請勿使用指標欄位串行化類型
類別 安全性
修正程式是中斷或非中斷 不中斷
預設在 .NET 8 中啟用 No

原因

指標的類型不安全,這表示您無法保證指標指向的記憶體正確性。 因此,使用指標欄位串行化類型是安全性風險,因為它可能會讓攻擊者控制指標。

檔案描述

此規則會檢查是否有具有指標字段或屬性的可串行化類別。 無法串行化的成員可以是指針,例如以標示的 System.NonSerializedAttribute靜態成員或字段。

如何修正違規

請勿對可串行化類別中的成員使用指標類型,或不要串行化屬於指標的成員。

隱藏警告的時機

不要冒險在可串行化類型中使用指標。

虛擬程式代碼範例

違規

using System;

[Serializable()]
unsafe class TestClassA
{
    private int* pointer;
}

解決方案 1

using System;

[Serializable()]
unsafe class TestClassA
{
    private int i;
}

解決方案 2

using System;

[Serializable()]
unsafe class TestClassA
{
    private static int* pointer;
}