CA5367: Jangan serialisasi tipe dengan bidang penunjuk

Properti Nilai
ID Aturan CA5367
Judul Jangan men-serialisasi tipe dengan bidang pointer
Kategori Keamanan
Perbaikan bersifat merusak atau tidak merusak Tidak terputus
Diaktifkan secara default di .NET 10 Tidak
Bahasa yang berlaku C# dan Visual Basic

Penyebab

Pointer tidak aman secara tipe, yang berarti Anda tidak dapat menjamin keakuratan memori yang mereka arahkan. Jadi, meng-serialisasi tipe-tipe dengan field pointer merupakan risiko keamanan, karena dapat memungkinkan penyerang mengontrol pointer tersebut.

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 tipe pointer untuk anggota dalam kelas yang dapat diserialkan atau jangan serialkan anggota yang merupakan pointer.

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