私は自分のアセンブリキャッシュを書くためになってしまった...
はここで彼らは自分のアセンブリキャッシュを実装する必要がある場合は他の人を助けるために、それがどのように動作するかの基本です:
- キャッシュは、アプリケーション内の対応するラッパークラスを持つフォルダーです。
- キャッシュにアセンブリをインストールする方法は、呼び出し元が保存して後でアセンブリを取得するために使用できる文字列 'token'(アセンブリがインストールされている名前)を返します。
- アセンブリを取得するメソッドはトークンを取り、キャッシュされたアセンブリの情報をカプセル化するオブジェクトを返します。アセンブリを取り付けるとき、まず既にキャッシュアセンブリのそれぞれのビットに入ってくるアセンブリのビットを比較し、アセンブリが既にインストールされているかどうかを判断
(すべてのビットが同じである場合、それらは明らかに同じことを行う必要があります物)。アセンブリが既にインストールされている場合は、以前にキャッシュされたアセンブリの名前を返します。まだインストールされていない場合は、キャッシュフォルダ内のアセンブリ名(assembly.dll、アセンブリ - (2).dll、アセンブリ - (3).dllなど)を使用して、アセンブリをフォルダにキャッシュし、キャッシュされた名前を呼び出し側に返します。
Bruce Payetteが "芝生の老朽化対策"(攻撃者が単に歩くことができるセキュリティ対策)と同じように、厳しいセキュリティと厳密な名前付けが行われている限り、周囲)。攻撃者がアセンブリを毒殺することを決めた場合、強固な名前が格納されている場所にアクセスし、その厳密な名前に簡単に変更することもできます。結局のところ、信頼できるソースからのみアセンブリを使用するという責任はユーザーにあります。ユーザーが悪質なアセンブリをインストールした場合、それは私のものではなく、彼のせいです。それでも、ユーザーの保護をさらに強化するために、アプリケーションで外部アセンブリを使用することはデフォルトでは無効になっています。しかし、他のアプリケーションでは、追加のセキュリティ層として強力な名前検証を実装することが理にかなっているかもしれません。