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

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

Jan 07, 2025 pm 02:27 PM

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 までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

c言語関数形式文字ケース変換手順 c言語関数形式文字ケース変換手順 Mar 03, 2025 pm 05:53 PM

c言語関数形式文字ケース変換手順

C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか? C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか? Mar 03, 2025 pm 05:52 PM

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

GULC:Cライブラリはゼロから構築されています GULC:Cライブラリはゼロから構築されています Mar 03, 2025 pm 05:46 PM

GULC:Cライブラリはゼロから構築されています

C言語関数の定義と呼び出しルールは何ですか、そして C言語関数の定義と呼び出しルールは何ですか、そして Mar 03, 2025 pm 05:53 PM

C言語関数の定義と呼び出しルールは何ですか、そして

C標準テンプレートライブラリ(STL)はどのように機能しますか? C標準テンプレートライブラリ(STL)はどのように機能しますか? Mar 12, 2025 pm 04:50 PM

C標準テンプレートライブラリ(STL)はどのように機能しますか?

明確な使用法とフレーズ共有 明確な使用法とフレーズ共有 Mar 03, 2025 pm 05:51 PM

明確な使用法とフレーズ共有

メモリに保存されているC言語関数の返品値はどこにありますか? メモリに保存されているC言語関数の返品値はどこにありますか? Mar 03, 2025 pm 05:51 PM

メモリに保存されているC言語関数の返品値はどこにありますか?

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

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

See all articles