首頁 > 後端開發 > C++ > Newtonsoft JSON的TypenameHandling是否有安全風險?

Newtonsoft JSON的TypenameHandling是否有安全風險?

Mary-Kate Olsen
發布: 2025-01-31 16:36:15
原創
232 人瀏覽過

Is Newtonsoft JSON's TypeNameHandling.All a Security Risk?

> newtonsoft JSON'S TypeNameHandling.All:安全含義

>

> Newtonsoft JSON的文檔強烈警告不要使用從不受信任的來源中進行絕望的JSON。 本文探討了與此設置相關的潛在安全漏洞,並概述了緩解策略。 TypeNameHandling.All

的漏洞 TypeNameHandling.All設置允許Newtonsoft JSON根據JSON有效負載中的元數據實例化類型。 儘管方便,但這會帶來重大的安全風險。 攻擊者可以製作惡意的json,迫使有害類型的避免化,從而導致任意代碼執行。 例如,良性的JSON有效負載可能看起來像:>

但是,惡意演員可以構建針對系統級類型的有效載荷:

TypeNameHandling.All

這將導致Newtonsoft JSON創建一個

實例,並可能通過操縱

<code class="language-json">{
   "$type": "Car",
   "Maker": "Ford",
   "Model": "Explorer"
}</code>
登入後複製

有效緩解:自定義
<code class="language-json">{
   "$type": "System.CodeDom.Compiler.TempFileCollection",
   "BasePath": "%SYSTEMDRIVE%",
   "KeepFiles": "false",
   "TempDir": "%SYSTEMROOT%"
}</code>
登入後複製

TempFileCollection>BasePath> TempDir>使用類型信息確保JSON避難所化的關鍵是使用自定義

。這允許嚴格控制避難所期間允許哪種類型,有效地防止了惡意類型的實例化。

實施自定義SerializationBinder涉及以下步驟:

創建一個實現SerializationBinder接口的類

覆蓋

實施類型驗證的方法。 這通常涉及檢查針對白名單或黑名單的類型。 SerializationBinder>

>向newtonsoft JSON Serializer註冊您的自定義
  1. > IBindingSerializer 通過實施這些步驟,您可以安全地從外部來源進行JSON,同時防止潛在的有害類型實例化。 這種主動的方法大大降低了剝削的風險。

以上是Newtonsoft JSON的TypenameHandling是否有安全風險?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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