ホームページ > バックエンド開発 > C++ > newtonsoft.jsonで `typenamehandling.all`を使用することは、信頼できないデータを脱出するために安全ですか?

newtonsoft.jsonで `typenamehandling.all`を使用することは、信頼できないデータを脱出するために安全ですか?

Patricia Arquette
リリース: 2025-01-31 16:26:09
オリジナル
360 人が閲覧しました

newtonsoft.jsonのTypeNameHandling.All:信頼されていないデータを降らせた場合のセキュリティリスク

Newtonsoft.jsonの

TypeNameHandlingプロパティは、多型オブジェクトがどのように脱色されるかを決定します。 Newtonsoft.jsonが、着信JSON内のTypeNameHandling.Allプロパティに基づいてタイプをインスタンス化できるように設定します。 ただし、これは信頼できないデータを処理する際に大きなセキュリティの脆弱性を示します。 $type

Is Using `TypeNameHandling.All` in Newtonsoft.Json Safe for Deserializing Untrusted Data?

セキュリティへの影響悪意のある俳優は、JSON内の有害なタイプを指定するプロパティを注入することにより、を悪用できます。 これにより、ターゲットシステムで任意のコードを実行したり、ターゲットシステムで不要なアクションを実行したりできます。 一見無害なクラスを考えてみましょう:

TypeNameHandling.All悪意のあるjsonペイロードは次のようになります:$type

および
<code class="language-csharp">public class Vehicle
{
    public string Make { get; set; }
    public string Model { get; set; }
}</code>
ログイン後にコピー
プロパティは良性ですが、

プロパティは

オブジェクトの作成を強制し、システムで有害なプロセスを開始する可能性があります。 これにより、通常のタイプのチェックがバイパスされ、さまざまな攻撃への扉が開きます。
<code class="language-json">{
  "$type": "System.Diagnostics.Process",
  "Make": "Attack",
  "Model": "DeleteC:\ImportantFiles"
}</code>
ログイン後にコピー

リスクの緩和MakeModel このような攻撃を防ぐために、外部の信頼できないソースからJSONをゆったりとするときは、$typeを使用しないようにしてください。 代わりに、タイプ名の処理を無効にするためにSystem.Diagnostics.Processを使用します。 または、カスタム

を実装して、脱派化中に許可されるタイプを綿密に制御し、効果的に安全なタイプを作成します。 これにより、多型の脱介入を処理するためのより詳細で安全なアプローチが提供されます。

以上がnewtonsoft.jsonで `typenamehandling.all`を使用することは、信頼できないデータを脱出するために安全ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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