0

私は現在、アプリケーションのランタイムの開始時に .net アセンブリ ファイルを自動的にロードし、ユーザーがその場で新しいアセンブリを追加できるようにする機能を持つ asp.net アプリケーションに取り組んでいます。

許可されたユーザーが、参照されたアセンブリや含まれる名前空間やクラスなどのアセンブリに関する情報を手動で読み込んで表示できるページを作成する予定です。ユーザーがこの情報にアクセスし、それが「安全」であると判断した場合、アセンブリは、アプリケーションの開始時に他のアセンブリと共に読み込まれ、処理されるアセンブリのリストに追加されます。アプリケーションがアセンブリを信頼できるリストに追加すると、アプリケーションはアセンブリの内容を処理します。

私が知る必要があるのは、クラスがアクティブ化/インスタンス化されていない場合に、アセンブリを完全にロードしてこの情報を取得することが「安全」であると言うかどうかです。そうでない場合、アセンブリの脅威を評価するこのアプローチに最適なリソースは何ですか?

4

1 に答える 1

0

より安全に実行したい場合は、新しい AppDomain を開始してそこからアセンブリを読み込むか、さらに簡単に、次のようにリフレクションのみのモードでアセンブリを読み込むことができます。

http://msdn.microsoft.com/en-us/library/system.reflection.assembly.reflectiononlyloadfrom.aspx

ランダムなアセンブリが Web アプリに与える可能性のある脅威については、軽い問題ではなく、サード パーティからのアセンブリを盲目的に信頼するべきではありません。たとえば、アセンブリに prestart 属性でマークされたメソッドが含まれていて、アプリケーションが起動する前に不適切なことを行う場合があります。また、他のものと同じ名前空間とクラス名を含むように有害に記述されている可能性もあります。そのため、思いがけずに記述されたリフレクション コードは、別のアセンブリではなく、悪意のあるアセンブリからクラスを取得する可能性があります。誰かのアセンブリだけをアプリに読み込みたくない理由はたくさんあります。

于 2013-03-05T06:34:09.677 に答える