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
public class Car { public string Maker { get; set; } public string Model { get; set; } }
{ "$type": "Car", "Maker": "Ford", "Model": "Explorer" }
: System.CodeDom.Compiler.TempFileCollection
{ "$type": "System.CodeDom.Compiler.TempFileCollection", "BasePath": "%SYSTEMDRIVE%", "KeepFiles": "False", "TempDir": "%SYSTEMROOT%" }
, 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!