Json.Net TypeNameHandling Auto により外部 JSON は脆弱になる可能性がありますか?
問題:
ユーザーがカスタム JSON オブジェクトをアップロードする Web サイト アプリケーションでは、潜在的な脅威を認識することが不可欠です自動化された JSON 型の逆シリアル化から発生します。問題は、逆シリアル化される唯一の型が特定の型 (例: MyObject) であり、MyObject のメンバーのいずれも System.Object 型または動的型を持たない場合、自動型逆シリアル化が脆弱性の影響を受けやすいかどうかです。
答え:
これらの条件を遵守するとリスクが大幅に軽減されますが、完全な保護は保証されません。 Json.Net の TypeNameHandling 設定を Auto に設定すると、MyObject に対応するフィールドが存在しない場合でも、「$type」情報に基づいてオブジェクトを作成できる可能性があります。
詳細な説明:
Json.Net をターゲットとする攻撃は、TypeNameHandling 設定を悪用して、受信側システムを侵害するように設計されたオブジェクトである「攻撃ガジェット」を構築します。 Json.Net の保護メカニズムには、不明なプロパティの無視と型の互換性のチェックが含まれます。ただし、明らかな型なしメンバーがなくても攻撃ガジェットを構築できるシナリオもあります。
推奨事項:
結論として、提供された条件によりリスクが大幅に軽減されますが、完全なセキュリティが保証されるわけではないことに注意することが重要です。 Json.Net の TypeNameHandling Auto 設定は依然として攻撃ガジェットの作成を促進する可能性があり、カスタム シリアル化バインダーなどの追加の予防措置が必要です。
以上が逆シリアル化を特定の型に制限している場合でも、Json.Net の「TypeNameHandling.Auto」を使用した自動 JSON 逆シリアル化は安全ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。