外部 JSON 是否因 Json.Net TypeNameHandling Auto 而容易受到攻擊?
在 Web 應用程式領域,處理 JSON 請求是一種常見做法。然而,人們對使用 Json.Net 等 JSON 框架的自動類型反序列化所帶來的潛在威脅提出了擔憂。
了解問題
當JSON 負載被反序列化時如果沒有足夠的驗證,特別是當存在動態或物件類型屬性時,攻擊者就有可能提供包含“$type”金鑰的惡意有效負載。此金鑰可以指定一個攻擊小工具,該攻擊小工具在反序列化時可以在接收系統上執行任意程式碼。
TypeNameHandling 和漏洞
Json.Net 提供了一個 TypeNameHandling 設置,確定包含「$type」鍵的 JSON有效負載如何已處理:
預設情況下,此設定通常保留為“Auto” ,這引起了對潛在漏洞的擔憂。的安全方法
在傳入 JSON 僅反序列化為特定類型的特定場景中( MyObject)並且 MyObject或其子物件中沒有物件或動態類型成員,不太可能
漏洞存在。類型化項目的意外類型或集合仍然可能允許攻擊小工具反序列化。 🎜>緩解措施和最佳實踐
進一步為了降低風險,請考慮以下最佳實踐:
使用自訂SerializationBinder 來驗證傳入型別。類型。的類型反序列化。數據並實施額外的保護措施以減輕潛在威脅至關重要。以上是Json.Net 的 TypeNameHandling.Auto 是否為外部 JSON 反序列化設定了安全風險?的詳細內容。更多資訊請關注PHP中文網其他相關文章!