Rumah > pembangunan bahagian belakang > C++ > Adakah typenameHandling typenameHandling Newtonsoft Json untuk data JSON luaran yang deserializing?

Adakah typenameHandling typenameHandling Newtonsoft Json untuk data JSON luaran yang deserializing?

Susan Sarandon
Lepaskan: 2025-01-31 16:31:09
asal
453 orang telah melayarinya

Is Newtonsoft JSON's TypeNameHandling Safe for Deserializing External JSON Data?

Newtonsoft JSON's : Pertimbangan keselamatan untuk JSON luar TypeNameHandling

Perpustakaan JSON Newtonsoft menawarkan

untuk deserializing JSON yang mengandungi maklumat jenis. Walau bagaimanapun, dengan menggunakan ini dengan sumber JSON luaran yang tidak dipercayai memberikan risiko keselamatan yang signifikan. TypeNameHandling

risiko keselamatan JSON luar deserializing dengan TypeNameHandling.All

tanpa

, SerializationBinder membolehkan deserializer untuk membuat contoh mana -mana jenis yang ditentukan dalam metadata JSON. Ini membuka kelemahan kepada pelakon berniat jahat yang boleh menghantar jenis berbahaya yang terdapat dalam permohonan anda atau rangka .NET. TypeNameHandling.All

Kelemahan Contoh:

Pertimbangkan kelas

yang mudah: Car

public class Car
{
    public string Maker { get; set; }
    public string Model { get; set; }
}
Salin selepas log masuk
muatan JSON yang tidak berbahaya:

{
   "$type": "Car",
   "Maker": "Ford",
   "Model": "Explorer"
}
Salin selepas log masuk
... akan deserialize dengan betul. Walau bagaimanapun, pelakon berniat jahat boleh membuat muatan yang mensasarkan kelas sistem seperti

: System.CodeDom.Compiler.TempFileCollection

{
   "$type": "System.CodeDom.Compiler.TempFileCollection",
   "BasePath": "%SYSTEMDRIVE%",
   "KeepFiles": "False",
   "TempDir": "%SYSTEMROOT%"
}
Salin selepas log masuk

, kelas bersiri yang menguruskan fail sementara, mempunyai finalisasi yang memadam fail apabila pengumpulan sampah. Muatan yang berniat jahat boleh menunjukkan finalisasi ini kepada fail sewenang -wenangnya pada sistem mangsa, mengakibatkan penghapusan fail yang tidak diingini tanpa interaksi pengguna. Ini hanya satu contoh; Banyak kelas sistem lain boleh dieksploitasi dengan cara yang sama. TempFileCollection Oleh itu, selalu gunakan

apabila deserializing JSON dari sumber luaran dengan

membolehkan untuk mengurangkan risiko ini. Hanya membenarkan deserialization jenis yang anda percayai dan kawalan secara eksplisit. SerializationBinder

Atas ialah kandungan terperinci Adakah typenameHandling typenameHandling Newtonsoft Json untuk data JSON luaran yang deserializing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan