検証可能なタイプ セーフ コードの作成

タイプ セーフなコードとは、適切に定義された、許可されている方法でだけ、型にアクセスするコードのことです。たとえば、有効なオブジェクト参照を例として考えると、タイプ セーフなコードは、実際のフィールド メンバに対応する固定オフセットが指すメモリ位置にアクセスします。しかし、オブジェクトがパブリックに公開するフィールドが属しているメモリの範囲外の、任意のオフセットが指すメモリ位置にアクセスするコードは、タイプ セーフとは言えません。

JIT コンパイルでは、検証と呼ばれるプロセスが実行され、コードが調べられてタイプ セーフかどうかが判断されます。検証の結果タイプ セーフであることが証明されたコードは、検証可能なタイプ セーフ コードと呼ばれます。検証プロセスやコンパイラに制約があるため、検証可能なタイプ セーフ コードではなくても、コードがタイプ セーフである場合はあります。タイプ セーフではない言語もあり、Microsoft Visual C++ などの一部の言語コンパイラは、検証可能なタイプ セーフ マネージ コードを生成できません。使用している言語コンパイラが検証可能なタイプ セーフ コードを生成するかどうかを確認するには、そのコンパイラのドキュメントを参照してください。特定の言語構成要素を使用しない場合にだけ、検証可能なタイプ セーフ コードを生成するコンパイラを使用している場合は、.NET Framework SDK の PEVerify ツールを使用して、作成したコードが検証可能なタイプ セーフ コードかどうかを確認できます。

検証可能なタイプ セーフ コード以外のコードは、セキュリティ ポリシーによって検証を省略することを許可されている場合にだけ、実行を試行できます。ただし、タイプ セーフは、アセンブリを分離するためのランタイムの機構において重要な要素であるため、コードがタイプ セーフの規則に違反している場合には、信頼度の高いセキュリティを確保することはできません。既定では、タイプ セーフでないコードは、その発生元がローカル コンピュータである場合にだけ実行できます。したがって、モバイル コードはタイプ セーフであることが必要です。

参照

関連項目

PEVerify ツール (Peverify.exe)

概念

コード アクセス セキュリティの基礎
MSIL からネイティブ コードへのコンパイル

その他の技術情報

コード アクセス セキュリティ