Rumah >pembangunan bahagian belakang >C++ >Adakah typenameHandling typenameHandling Newtonsoft Json untuk data JSON luaran yang deserializing?
Newtonsoft JSON's : Pertimbangan keselamatan untuk JSON luar TypeNameHandling
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
, 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
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!