Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
| 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;
}