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
Susan Sarandonasal
2025-01-31 16:31:09456semak imbas

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

<code class="language-csharp">public class Car
{
    public string Maker { get; set; }
    public string Model { get; set; }
}</code>
muatan JSON yang tidak berbahaya:

<code class="language-json">{
   "$type": "Car",
   "Maker": "Ford",
   "Model": "Explorer"
}</code>
... akan deserialize dengan betul. Walau bagaimanapun, pelakon berniat jahat boleh membuat muatan yang mensasarkan kelas sistem seperti

: System.CodeDom.Compiler.TempFileCollection

<code class="language-json">{
   "$type": "System.CodeDom.Compiler.TempFileCollection",
   "BasePath": "%SYSTEMDRIVE%",
   "KeepFiles": "False",
   "TempDir": "%SYSTEMROOT%"
}</code>

, 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:
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