Newtonsoft JSONのTypeNameHandling
:外部JSONのセキュリティ考慮事項
を提供しています。 ただし、信頼されていない外部JSONソースでこれを使用すると、重大なセキュリティリスクが表示されます。
TypeNameHandling
TypeNameHandling.All
> deserializerがJSONメタデータで指定された任意のタイプのインスタンスを作成できるようにします。 これにより、アプリケーションまたは.NETフレームワークに存在する有害なタイプを送信できる悪意のある俳優に脆弱性があります。
例の脆弱性: SerializationBinder
TypeNameHandling.All
単純な
一見無害なjsonペイロード:
...正しく脱気になります。ただし、悪意のある俳優は、Car
:
<code class="language-csharp">public class Car { public string Maker { get; set; } public string Model { get; set; } }</code>一時的なファイルを管理するシリアル化可能なクラスであるには、ガベージコレクションでファイルを削除するファイナルライザーがあります。 悪意のあるペイロードは、このファイナルライザーに被害者のシステム上の任意のファイルに向けられ、ユーザーとのやり取りなしで意図しないファイル削除をもたらす可能性があります。 これはほんの一例です。他の多くのシステムクラスも同様の方法で活用される可能性があります。 したがって、これらのリスクを緩和するために有効になっている外部ソースからJSONをゆるくするときは、常にa
<code class="language-json">{ "$type": "Car", "Maker": "Ford", "Model": "Explorer" }</code>を使用してください。 あなたが明示的に信頼して制御するタイプの敏aserializationのみを許可します。
以上がNewtonsoft JSONのTypeNameHandlingは、外部JSONデータの脱派のために安全ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。