CA5367: Jangan membuat serialisasi jenis dengan bidang penunjuk
Properti | Nilai |
---|---|
ID Aturan | CA5367 |
Judul | Jangan membuat serialisasi jenis dengan bidang penunjuk |
Golongan | Keamanan |
Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
Diaktifkan secara default di .NET 9 | No |
Penyebab
Pointer tidak aman jenis, yang berarti Anda tidak dapat menjamin kebenaran memori yang mereka arahkan. Jadi, jenis serialisasi dengan bidang penunjuk adalah risiko keamanan, karena mungkin memungkinkan penyerang mengontrol penunjuk.
Deskripsi aturan
Aturan ini memeriksa apakah ada kelas yang dapat diserialisasikan dengan bidang atau properti penunjuk. Anggota yang tidak dapat diserialisasikan dapat menjadi penunjuk, seperti anggota statis atau bidang yang ditandai dengan System.NonSerializedAttribute.
Cara memperbaiki pelanggaran
Jangan gunakan jenis penunjuk untuk anggota di kelas yang dapat diserialisasikan atau tidak membuat serialisasi anggota yang merupakan penunjuk.
Kapan harus menekan peringatan
Jangan mengambil risiko untuk menggunakan pointer dalam jenis yang dapat diserialisasikan.
Contoh kode semu
Pelanggaran
using System;
[Serializable()]
unsafe class TestClassA
{
private int* pointer;
}
Solusi 1
using System;
[Serializable()]
unsafe class TestClassA
{
private int i;
}
Solusi 2
using System;
[Serializable()]
unsafe class TestClassA
{
private static int* pointer;
}