下午好。 在我的解決方案中,我使用RazorEngine庫來生成從數據庫接收的動態頁面。RarozEngine否認在生成頁面時使用命名空間
普通用戶可以在他的辦公室編輯頁面(視圖)。
(用於生成PDF文件,DOC文件和MasterPage個人頁面)。
例子:
<p>Total to pay: @Model["PAYABLE"] @Model["CURRENCY"]</p>
或者:
@foreach(string link in Model.StylesLinks){
<link rel="stylesheet" href="@link" />
}
所有的功能都實現,但在系統中的一個大洞。 現在任何用戶都可以執行任何代碼。
例如,你可以很容易地顯示的ConnectionStrings列表:
@foreach (System.Configuration.ConnectionStringSettings conn in
System.Configuration.ConfigurationManager.ConnectionStrings)
{
@:@conn.ConnectionString<br/>
}
然後,使用該的ConnectionStrings,您可以連接到數據庫,做任何事情。
問題:如何禁用使用命名空間,如「系統」?
只需在文本中替換單詞「系統」不適合。你總是可以簡單地按名字獲得課程。 (+有很多方法可以做到這一點)
Type sys = Type.GetType("Sys" + "tem.Configuration.ConfigurationManager");
我認爲你需要創建一個沙盒:如何在Sandbox中部分運行代碼:http://msdn.microsoft.com/en-us/library/bb763046%28v=vs.110%29.aspx – VahidN