1

アプリケーションのユーザーがC#のスニペットを実行して、すべてを明示的に公開するための大きなスクリプトインターフェイスレイヤーを作成しなくても、アセンブリ内の特定のオブジェクトを直接操作できるようにしています。

このコードは動的にコンパイルされたアセンブリに挿入されるため、アセンブリ自体を制御できますが、リフレクションを使用してプライベートメソッドにアクセスするコードを停止する必要があります。

コードを実行する直前にsecurityPermissionObject.Deny()を呼び出そうとしましたが、これにより、オブジェクトのメソッドがユーザーのコードによって呼び出されたときにリフレクションを使用できなくなります(一部のメソッドは使用します)。

信頼できるアセンブリで呼び出すパブリックメソッドに影響を与えずに、疑わしいアセンブリでのみアクセス許可を制限する方法はありますか?

4

2 に答える 2

1

新しいappdomainを作成してみてください。そしてそれをサンドボックスとして使用します。このサンドボックス内で、アセンブリをにロードできます。

これが例です。

もちろん、現在2つのアプリドメインがあるため、通信が少し複雑になります。パイプまたは他の通信メカニズムを介したWebサービスを検討する場合があります。

これは、2つのアプリドメインがどのように通信できるかについての記事です。

于 2011-01-07T06:06:50.217 に答える
0

(古い質問です。まだ回答が必要かどうかはわかりません)

呼び出しがパブリック メソッドに戻ってきたら、最初に行う必要があるのは、パラメーターを慎重にサニタイズし、不正な呼び出しを拒否することです。その後、RelectionPermissionのAssertへの呼び出しを追加できます。これにより、基本的に、リフレクションが必要なコードを呼び出すことができ、コール スタックの上位に Deny が表示されなくなります。

于 2011-01-07T09:30:29.533 に答える