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