Rumah >pembangunan bahagian belakang >C++ >Adakah typenameHandling typenameHandling Newtonsoft Json. Semua risiko keselamatan?
: Implikasi Keselamatan TypeNameHandling.All
dokumentasi Newtonsoft JSON sangat berhati -hati terhadap penggunaan
TypeNameHandling.All
TypeNameHandling.All
tetapan
Contohnya, muatan JSON jinak mungkin kelihatan seperti ini: TypeNameHandling.All
<code class="language-json">{ "$type": "Car", "Maker": "Ford", "Model": "Explorer" }</code>Ini akan menyebabkan Newtonsoft JSON membuat contoh
, yang berpotensi memadamkan fail sewenang -wenang pada sistem dengan memanipulasi
dan<code class="language-json">{ "$type": "System.CodeDom.Compiler.TempFileCollection", "BasePath": "%SYSTEMDRIVE%", "KeepFiles": "false", "TempDir": "%SYSTEMROOT%" }</code>.
TempFileCollection
BasePath
mitigasi yang berkesan: Custom TempDir
Kunci untuk mendapatkan JSON Deserialization dengan maklumat jenis menggunakan Custom SerializationBinder
. Ini membolehkan kawalan ketat di mana jenis dibenarkan semasa deserialization, dengan berkesan menghalang instansiasi jenis berniat jahat.
melibatkan langkah -langkah ini: SerializationBinder
Buat kelas yang melaksanakan antara muka SerializationBinder
.
IBindingSerializer
BindToName
SerializationBinder
Atas ialah kandungan terperinci Adakah typenameHandling typenameHandling Newtonsoft Json. Semua risiko keselamatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!