Bagikan melalui


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