首頁 >後端開發 >C++ >在newtonsoft.json中使用`typenamehandling.ll.

在newtonsoft.json中使用`typenamehandling.ll.

Patricia Arquette
Patricia Arquette原創
2025-01-31 16:26:09412瀏覽

> newtonsoft.json'sTypeNameHandling.All:在不信任數據

時,安全風險 Newtonsoft.json中的屬性決定瞭如何應對多態對象。 將其設置為

啟用newtonsoft.json,可以根據傳入的JSON中的屬性實例化類型。 但是,在處理不信任數據時,這會呈現出很大的安全漏洞。 > TypeNameHandlingTypeNameHandling.All $type

安全含義Is Using `TypeNameHandling.All` in Newtonsoft.Json Safe for Deserializing Untrusted Data?

惡意參與者可以通過注入JSON中指定有害類型的屬性來利用>。 這使他們可以執行任意代碼或在目標系統上執行不需要的操作。 > 考慮一個看似無害的階級:

TypeNameHandling.All惡意的JSON有效載荷看起來像這樣:$type

>

<code class="language-csharp">public class Vehicle
{
    public string Make { get; set; }
    public string Model { get; set; }
}</code>
屬性是良性的,但

屬性會迫使創建A

對象,從而有可能在系統上啟動有害過程。 這繞過正常類型檢查並打開各種攻擊的門。
<code class="language-json">{
  "$type": "System.Diagnostics.Process",
  "Make": "Attack",
  "Model": "DeleteC:\ImportantFiles"
}</code>
>

Make緩解風險Model$type 為了防止這種攻擊,請避免使用System.Diagnostics.Process>從外部,不受信任的來源進行挑選JSON時使用。 而是使用

禁用類型名稱處理。 另外,可以實現自定義

,以精心控制在避難化期間允許使用哪些類型,從而有效地白名單的安全類型。 這為處理多態性的估算化提供了一種更詳細,更安全的方法。

以上是在newtonsoft.json中使用`typenamehandling.ll.的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn