TypeNameHandling.All
:信頼されていないデータを降らせた場合のセキュリティリスク TypeNameHandling
プロパティは、多型オブジェクトがどのように脱色されるかを決定します。 Newtonsoft.jsonが、着信JSON内のTypeNameHandling.All
プロパティに基づいてタイプをインスタンス化できるように設定します。 ただし、これは信頼できないデータを処理する際に大きなセキュリティの脆弱性を示します。
$type
セキュリティへの影響悪意のある俳優は、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>
リスクの緩和Make
Model
このような攻撃を防ぐために、外部の信頼できないソースからJSONをゆったりとするときは、$type
を使用しないようにしてください。 代わりに、タイプ名の処理を無効にするためにSystem.Diagnostics.Process
を使用します。 または、カスタム
以上がnewtonsoft.jsonで `typenamehandling.all`を使用することは、信頼できないデータを脱出するために安全ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。