状態データの保護

重要情報を処理するアプリケーション、または任意の種類のセキュリティ決定を行うアプリケーションは、扱うデータを自分自身の制御下に置き、他の悪意の可能性のあるコードが直接それらのデータにアクセスできないようにする必要があります。 データをメモリ内で保護する最も良い方法は、データをプライベート変数または内部変数 (同じアセンブリ内だけにスコープを制限) として宣言することです。 しかし、このデータがアクセスを受ける場合は、次の点を認識する必要があります。

  • リフレクション機構を使用すると、オブジェクトを参照できる信頼度の高いコードはプライベート メンバーを取得および設定できます。

  • シリアル化を使用すると、信頼度の高いコードがオブジェクトに対応するシリアル化された形式のデータにアクセスできる場合は、そのコードは効率よくプライベート メンバーを取得および設定できます。

  • デバッグ時には、このデータを読み取られる可能性があります。

どのメソッドおよびプロパティも、意図しない方法でこれらのデータを公開しないようにしてください。

クラスとその派生クラスへのアクセスを制限することにより、データが保護された状態であると宣言する方法もあります。 しかし、公開の度合いが高まるため、次の対策を講じる必要があります。

  • クラスからの派生を許可するコードを制御します。この方法として、同じアセンブリだけに派生を制限するか、または「メソッド アクセスの保護」に記述されている宣言セキュリティを使用し、コードをクラスから派生させるために ID またはアクセス許可を要求します。

  • 派生したすべてのクラスが同じ保護機能を実装しているかどうか、またはシールされているかどうかを確認します。

参照

概念

安全なコーディングのガイドライン