首頁 > 後端開發 > C++ > 如何在Newtonsoft JSON中安全地處理Typenamehandling以防止避免攻擊?

如何在Newtonsoft JSON中安全地處理Typenamehandling以防止避免攻擊?

Linda Hamilton
發布: 2025-01-31 16:42:10
原創
971 人瀏覽過

How Can I Securely Handle TypeNameHandling in Newtonsoft Json to Prevent Deserialization Attacks?

安全處理 Newtonsoft JSON 中的 TypeNameHandling

在 JSON 序列化和反序列化的過程中,謹慎處理 TypeNameHandling 至關重要,尤其是在處理外部數據源時。

TypeNameHandling.All 雖然方便了反序列化過程中的類型推斷,但也存在安全風險。當反序列化來自不受信任來源的 JSON 時,此設置允許 Newtonsoft Json 創建元數據中指定的任意類型的實例。

潛在危險:

攻擊者可以發送包含 $type 屬性的惡意 JSON,該屬性引用可能具有破壞性的類型,例如 System.CodeDom.Compiler.TempFileCollection。此類型在垃圾回收期間可以自動刪除受害者係統上的文件,從而危及文件完整性。

示例:

考慮以下惡意 JSON 有效負載:

{
   "$type": "System.CodeDom.Compiler.TempFileCollection",
   "BasePath": "%SYSTEMDRIVE%",
   "KeepFiles": "False",
   "TempDir": "%SYSTEMROOT%"
}
登入後複製

如果在沒有適當的安全措施的情況下反序列化此 JSON,則將實例化 TempFileCollection 類型並嘗試根據指定的參數刪除文件。

緩解措施:

為了降低這種風險,在使用 TypeNameHandling.All 反序列化時,必須使用自定義 SerializationBinder 驗證傳入的類型。此綁定器可以在構造實例之前驗證引用的類型的安全性。

以上是如何在Newtonsoft JSON中安全地處理Typenamehandling以防止避免攻擊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板