Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh deserialize JSON dengan typenameHandling di C# untuk mengelakkan risiko keselamatan?

Bagaimanakah saya boleh deserialize JSON dengan typenameHandling di C# untuk mengelakkan risiko keselamatan?

Barbara Streisand
Lepaskan: 2025-01-31 16:21:09
asal
715 orang telah melayarinya

How Can I Safely Deserialize JSON with TypeNameHandling in C# to Prevent Security Risks?

typenameHandling: Kisah amaran di belakang JSON -BEATIALIZATION

Dalam bidang derivatifisasi JSON, typenameHandling bermain memainkan peranan penting dalam menentukan cara menjelaskan data JSON luaran. Walaupun ia secara automatik boleh membuat jenis contoh tertentu, ia perlu berhati -hati apabila berurusan dengan data JSON dari sumber sumber yang dipercayai.

tetapan lalai typenamehandling.all kelihatan mudah, tetapi ia menyembunyikan bahaya. Apabila data JSON mengandungi metadata jenis, JSON.NET akan mencuba jenis yang ditentukan dalam jenis yang ditentukan. Walaupun ini kelihatan tidak berbahaya, kod berniat jahat boleh menggunakan fungsi ini untuk membuat objek berbahaya dalam aplikasi anda.

Pertimbangkan contoh ini: Tunjukkan data JSON objek kereta:

Menggunakan typenameHandling.all, json.net akan membuat contoh kereta baru dan mengisi atributnya dengan sewajarnya. Walau bagaimanapun, penyerang boleh mengubahsuai struktur JSON untuk mewakili sistem.codedom.compiler.tempfileCollection:
<code>{
   "$type": "Car",
   "Maker": "Ford",
   "Model": "Explorer"
}</code>
Salin selepas log masuk

JSON yang berniat jahat ini akan mengarahkan JSON.net untuk meniru objek TempFileCollect, yang akan memadam fail pada sistem mangsa tanpa persetujuan mangsa yang tidak diketahui atau tidak diingini.
<code>{
       "$type": "System.CodeDom.Compiler.TempFileCollection",
       "BasePath": "%SYSTEMDRIVE",
       "KeepFiles": "False",
       "TempDir": "%SYSTEMROOT%"
}</code>
Salin selepas log masuk

Untuk mengurangkan kelemahan ini, apabila menggunakan typenameHandling.all kembali Serialization JSON, pastikan anda menggunakan siri serialization custom. Pengikat ini boleh melakukan pengesahan dan pemeriksaan yang ketat untuk memastikan jenis yang dihantar sebelum instantiasi selamat dan dibenarkan. Dengan mengambil langkah -langkah pencegahan ini, anda boleh menghalang JSON yang berniat jahat daripada merosakkan integriti permohonan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh deserialize JSON dengan typenameHandling di C# untuk mengelakkan risiko keselamatan?. 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