JSON オブジェクトを使用した .NET アプリケーションの保護
JSON はアプリケーション内のオブジェクトとデータを共有するために広く使用されているフォーマットです。JSON オブジェクトのシリアライズとデシリアライズを行う .NET アプリケーションを保護するためには、特別な配慮を行う必要があります。次のような基本的なクラス Employee について考えてみましょう。
これを JSON にシリアライズすると、オブジェクトは文字列として保存されます。
もしこの時点でコンソールに書き出された場合、この「json」文字列は次のように表示されます。
{"FirstName":"Jane","LastName":"Doe","Email":"jd@example.com"}
この Json 文字列に出力されたプロパティの元の名称は、FirstName、Lastname、それに Email です。このアプリケーションの別の場所で、このオブジェクトは .NET クラスとしてデシリアライズされます。
デシリアライズ作業のメカニズムでは、元のプロパティ名に依存してデータをペアリングしますが、デフォルトでは、Dotfuscator for .NET はこれらのプロパティ名を変更してしまいます。このため、デシリアライズが正しく動作するように、Dotfuscator for .NET の「名前の変更」タブで FirstName、Lastname、Email のプロパティをリネーム処理から除外するように指示する必要があります。
これにより、次のような正しい出力が行われます。
Deserialized: Jane Doe jd@example.com
ここでは JSON のシリアライズとデシリアライズの一例についてご紹介しました。他にも JSON オブジェクトをシリアライズ・デシリアライズする方法はありますが、基になる概念は難読化に関して同じです。プロパティ名がそのプロパティの文字列表現と比較される場合、Dotfuscator for .NET による名前の変更からの除外が必要になる可能性があります。
本トピックに関する完全なサンプルは、ここからダウンロードできます。
このトピックについてのご意見、または他に取り扱ってほしいトピックがございましたら、info@agtech.co.jp までお気軽にお問合せください。
(July 23, 2018 Johnny 著)