ホームページ > バックエンド開発 > C++ > Newtonsoft JSONのTypeNameHandlingは、すべてセキュリティリスクですか?

Newtonsoft JSONのTypeNameHandlingは、すべてセキュリティリスクですか?

Mary-Kate Olsen
リリース: 2025-01-31 16:36:15
オリジナル
232 人が閲覧しました

Is Newtonsoft JSON's TypeNameHandling.All a Security Risk?

Newtonsoft JSONのTypeNameHandling.All:セキュリティへの影響

Newtonsoft JSONのドキュメントは、信頼できない情報源からJSONの脱毛を使用することに対して強く警告しています。 この記事では、この設定に関連する潜在的なセキュリティの脆弱性を調査し、緩和戦略を概説します。

TypeNameHandling.All

の脆弱性 TypeNameHandling.All設定により、Newtonsoft JSONはJSONペイロード内のメタデータに基づいてタイプをインスタンス化できます。 便利ですが、これは重大なセキュリティリスクを生み出します。 攻撃者は、有害なタイプの敏arialializationを強制する悪意のあるJSONを作成し、任意のコード実行につながります。 たとえば、

良性のjsonペイロードは次のようになるかもしれません:

TypeNameHandling.All

しかし、悪意のある俳優は、システムレベルのタイプをターゲットにしたペイロードを作成できます:

これにより、Newtonsoft JSONは
<code class="language-json">{
   "$type": "Car",
   "Maker": "Ford",
   "Model": "Explorer"
}</code>
ログイン後にコピー
インスタンスを作成し、

<code class="language-json">{
   "$type": "System.CodeDom.Compiler.TempFileCollection",
   "BasePath": "%SYSTEMDRIVE%",
   "KeepFiles": "false",
   "TempDir": "%SYSTEMROOT%"
}</code>
ログイン後にコピー

効果的な緩和:カスタムTempFileCollection BasePathTempDir

型情報を使用してJSONの脱審設定を保護するための鍵は、カスタム

を使用することです。これにより、脱介入中に許可されるタイプを厳密に制御でき、悪意のあるタイプのインスタンス化を効果的に防止します。 カスタムを実装するには、これらの手順が含まれます SerializationBinder

インターフェイスを実装するクラスを作成します。

SerializationBinder

メソッドをオーバーライドして、型検証を実施します。 これには通常、ホワイトリストまたはブラックリストに対してタイプをチェックすることが含まれます。

Newtonsoft JSON Serializerにカスタムを登録します SerializationBinder

これらの手順を実装することにより、潜在的に有害なタイプのインスタンス化を防ぎながら、外部ソースからJSONを安全に脱着することができます。 この積極的なアプローチは、搾取のリスクを大幅に減らします

以上がNewtonsoft JSONのTypeNameHandlingは、すべてセキュリティリスクですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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