我提前爲我的問題的一般性質道歉,但我無法找到的人試圖做同樣的事情,我在網絡上的任何有用的建議。讓我來描述一下我的情況:ASP.NET MVC 3 Razor視圖限制
我提供最終用戶/網站的設計師通過存儲在數據庫中的視圖(用剃刀),以定製自己的意見的能力。我有這一切的工作,但我的問題是以下;從安全的角度來看,我如何確保並強制執行不需要的代碼不會在用戶定義的視圖中執行?我認爲有兩種基本方法將在概念上起作用,但我不確定哪一種方法更可行或可行。
選項1:在管理工具中創建一個允許用戶輸入視圖代碼的驗證方法。這需要採取白名單或黑名單的辦法,以允許或不允許。
選項2:從能夠視圖的渲染時發生執行防止不希望的代碼。
由於東西需要被封鎖一個簡單的例子,我們不希望允許訪問在web.config中讀或寫文件,訪問任何數據訪問功能,甚至訪問配置設置等。 。可能會有一些可能不應該允許的大小適中的列表,但我需要坐下來儘量考慮與安全相關的問題。
我的問題是,哪種方法是最好的選擇?另外,可以提供關於如何去做的任何方向?我認爲我可能能夠做出基於信任級別的變更,這將成爲選項2,但無法找到任何方式在基於每個視圖的莊園中進行這項工作(管理代碼被允許執行任何想要的操作)。我認爲選項1最終會是最好的選擇,我將不得不檢查某些不應允許的框架功能的輸入。有沒有人有任何經驗做我想做的事情?任何反饋非常感謝!
選項2將是從用戶的角度來看,誰可能會嘗試使用代碼,他或她,否則不知道的是「壞」的可怕。我同意SLak的白名單方法會更好,我不知道你的項目的確切性質,比如誰是你的消費者,但這將是一項艱鉅的任務,這取決於你需要給他們多少靈活性。 – AwDogsGo2Heaven 2012-04-27 14:27:34
我打算建議你查看Liquid標記,然後找到[DotLiquid](http://dotliquidmarkup.org/try-online)。它看起來像涵蓋了你想要完成的事情(但是使用Liquid而不是Razor)。 – 2012-04-27 14:29:02