ホームページ > バックエンド開発 > C++ > Json.Net の TypeNameHandling.Auto は外部 JSON 逆シリアル化に対するセキュリティ リスクを設定しますか?

Json.Net の TypeNameHandling.Auto は外部 JSON 逆シリアル化に対するセキュリティ リスクを設定しますか?

Susan Sarandon
リリース: 2025-01-07 14:27:42
オリジナル
245 人が閲覧しました

Is Json.Net's TypeNameHandling.Auto Setting a Security Risk for External JSON Deserialization?

Json.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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート