Json.Net の TypeNameHandling.Auto は外部 JSON 逆シリアル化に対するセキュリティ リスクを設定しますか?
Jan 07, 2025 pm 02:27 PMJson.Net TypeNameHandling Auto により外部 JSON は脆弱ですか?
Web アプリケーションの領域では、JSON リクエストを処理するのが一般的です。ただし、Json.Net などの JSON フレームワークを使用した自動型逆シリアル化によってもたらされる潜在的な脅威に関して懸念が提起されています。
問題を理解する
JSON ペイロードが逆シリアル化されるとき特に動的プロパティまたはオブジェクト型プロパティが存在する場合、適切な検証が行われないと、攻撃者が次のような悪意のあるペイロードを提供する可能性があります。 「$type」キー。このキーは、逆シリアル化されると受信側システムで任意のコードを実行できる攻撃ガジェットを指定できます。
TypeNameHandling と Vulnerability
Json.Net は、TypeNameHandling 設定を提供します。 「$type」キーを含む JSON ペイロードがどのように処理されるかを決定します処理済み:
- なし: "$type" キーの逆シリアル化を無効にします。
- 自動: " で指定された型を自動的に解決します。 $type" キー。
デフォルトでは、この設定は多くの場合そのままのままです。 「自動」。潜在的な脆弱性に関する懸念が生じます。
TypeNameHandling.Auto による安全なアプローチ
受信 JSON が特定の型にのみ逆シリアル化される特定のシナリオでは ( MyObject)、MyObject またはそのサブオブジェクト内にはオブジェクトまたは動的型付きメンバーはありません。 脆弱性が存在する可能性は低い。
ただし、これは安全性を保証するものではないことに注意することが重要です。 予期しない型または型指定されていない項目を含むコレクションでは、依然として許可される可能性があります。攻撃ガジェットの逆シリアル化用。
軽減策と最善策プラクティス
リスクをさらに軽減するには、次のベスト プラクティスを検討してください。
- カスタム SerializationBinder を使用して受信型を検証します。
- の使用を制限します。オブジェクト、動的、および IDynamicMetaObjectProvider type.
- 潜在的な攻撃ガジェットと基本型を共有するコレクションまたは値を逆シリアル化する場合は注意してください。
- 実装されている型の逆シリアル化を防ぐには、DefaultContractResolver.IgnoreSerializableInterface = true を設定します。 ISerializable.
結論
Json.Net の TypeNameHandling.Auto 設定を利用すると脆弱性のリスクが軽減される可能性がありますが、受信する JSON データを徹底的に検証することが不可欠です。潜在的な脅威を軽減するために追加の保護措置を実装します。
以上がJson.Net の TypeNameHandling.Auto は外部 JSON 逆シリアル化に対するセキュリティ リスクを設定しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか?

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか?
