2010-12-15 65 views
5

我想在我的API上運行第三方.NET程序集。我想讓它根據自己的意願調用它自己的方法和對象,但否認它訪問我的API沒有明確給出的任何東西。特別是,如果我的API將對象傳遞給第三方代碼爲IMyObject,我不希望它們使用反射或任何方法將該對象提升到實現該接口的MyObject是否可以禁用.NET程序集的反射?

有沒有辦法拒絕在這個第三方程序集中使用反射的能力?我完全控制了一切,所以我不需要阻止人們反編譯我的程序集,只是在運行時濫用它。

回答

4

您正在尋找的是在沙箱中運行程序集。這可以通過.Net在uisng CAS (Code Access Security)中實現。

這是它是如何工作的。您創建AppDomain,分配有限的權限。例如,您允許顯示UI,但不允許使用文件系統或反射。然後你將一個裝配加載到它並讓它運行。

.Net 4.0引入了一個全新的安全模型。但我對此並不瞭解。

這裏是什麼讓你開始:

Discover Techniques for Safely Hosting Untrusted Add-Ins with the .NET Framework 2.0

0

如果調用者正在'完全信任'上運行,則無法完成任何操作。他將永遠擁有組裝的完整權限。

最好是混淆程序集。這會使組裝有點難以重新設計。

+0

對不起,你誤會我了。我是打電話的人,我打電話給其他人的集會。 – Clueless 2010-12-17 04:07:31

相關問題