2

Java で実行されている Windows サービスにはセキュリティ レベルで欠陥があることを知っています。これは、JVM がサービス スレッドで実行されていることを意味するため、潜在的な脅威の数が増加するためです。

C# はどうですか? C# は CLR ( Common Language Runtime ) で実行されているため、深刻なセキュリティ侵害につながる可能性があると言うのは間違っていますか?

4

1 に答える 1

4

CLR は、実際に追加のセキュリティ レイヤーを提供し、JVM のいくつかの落とし穴を回避するために、いくつかのセキュリティ対策を実装しています。

まず第一に、コードはあなたのものであり、そのように実行されます。Java のように解釈されず、仮想マシン上で実行されます。.NET でアセンブリまたは exe ファイルを生成すると、中間言語コードである IL コードが得られます。

次に、その IL がジャスト イン タイムでマシン コードにコンパイルされ、そのマシン コードが実行されます。それを解釈する仮想マシンはありません。コードが特定のマシン用のアセンブラーにコンパイルされると、標準言語で書かれた他のプログラムと同じように実行されます。

.NET プログラムを実行すると、プログラムの最初の命令が実際に CLR をロードし、CLR がプログラムのメイン エントリ ポイントを探して実行を開始します。CLR ローダーは mscorlib.dll にあり、これはGACにあります。

現在、GAC 自体にはいくつかのセキュリティ対策が含まれています。最も重要なのは、GAC にあるアセンブリ (もちろん Microsoft のアセンブリも含む) に厳密な名前が付けられていること、つまり署名されていることです。

Microsoft は彼の秘密鍵を保持し、任意のリリースの .NET Framework のすべてのアセンブリに署名します。次に、GAC へのインストール時に、その署名が Microsoft 公開鍵と照合され、それらが一致することを確認します。このプロセスは、Visual Studio で .NET フレームワーク バージョンを参照すると自動的に行われますが、コマンド ラインを介してコンパイル中に明示的に行うこともできます。

要するに、いいえ、同じセキュリティ侵害につながるわけではありません。

于 2012-08-10T15:45:43.790 に答える