2013-01-14 57 views
2

我編寫了一些代碼,將運行時C#代碼編譯到程序集中,並將其存儲在asp.net的內存中。之後可以執行這樣的編譯代碼。防止在代碼中使用system.reflection

在運行時編譯的代碼由用戶編寫。它始終是一個從我創建的基類繼承的類。問題在於用戶可能使用反射訪問此基類中的私有字段和方法。所以我的問題:有沒有辦法阻止使用反射?

+1

我們可以看到一些代碼。你有什麼嘗試? – geedubb

+0

我現在沒有試過任何東西。我做了一些研究,但沒有發現任何有用的東西 –

回答

3

Framework Class Library中有ReflectionPermission屬性,它通過System.Reflection API控制對非公共類型和成員的訪問。如果您可以將此屬性應用於您的案例中生成的程序集,則可以嘗試查看它是否有效。

+0

我會強調YiğitYener的觀點 - 讓用戶編寫代碼,然後編譯並在服務器上運行*危險*。你擔心訪問私人領域?還擔心調用'System.IO.Directory.Delete(「C:\\」)'。在.NET 4.0之前,我們爲此提供了代碼訪問安全性。在4.0及以上版本中,我們有安全透明代碼。閱讀它:http://msdn.microsoft.com/en-us/library/ee191569(v=vs.100).aspx –