ASP.NET運行模式的權限說明圖:
ASP.NET的默認運行模式是FULL TRUST 級別,在該級別下.NET程序擁有極高的權限執行程序或者代碼。但是讓程序運行在該模式下是十分危險的,黑客可以輕易地利用你的程序進行提權。國外空間,比如GoDaddy通常會把ASP.NET代碼執行權限控制在中等安全模式。我司決定將ASP.NET的運行模式調為中等信任級別。
中等安全模式會有哪些影響?
以下是在ASP.NET中等安全模式下曾經遇到過的一些問題:
1. 基于VirtualPathProvider的模板機制不能用,因為VirtualPathProvider至少需要運行在High模式。
2. BuildProvider不能用,意味著你想自己添加自己的語言實現也不能用了,不過大部分項目不會用到這么高級的東西。
3. CodeDom、Emit不能用了,這下慘了,什么Ioc、AOP,動態注入的高科技玩意兒,全都廢了,這些不是基于CodeDom的就是基于Emit的。
4. 通過aspx頁面接管文件下載也不行了,Response寫文件流到客戶端需要更高的代碼執行權限。
5. 大文件上傳也別想了,因為大文件上傳萬變不離HttpWorkRequst,獲取HttpWorkRequst的代碼需要FullTrust模式。
6. SQLite不能用了,因為中等安全模式下沒有非托管代碼調用權限,所以除了SQLite外,涉及到非托管代碼調用的,也都廢掉了。
所以,如果要考慮允許讓用戶把程序部署到中等安全模式下,那就越早做中等安全模式的兼容性測試越好。
因為很多不能用的東西,都是涉及到基礎結構的。
比如,文件下載不能通過Response寫文件流的方式,你的程序正巧又是這么做防盜鏈,咋辦?
答:用.htaccess做偽靜態。
中等信任級別的主要限制:
不能調用非托管代碼
不能調用服務組件
不能寫事件日志
不能訪問 Microsoft 消息隊列
文件訪問僅限于當前應用程序目錄
注冊表訪問是不允許的
如果因為調整了安全級別導致您的網站出現訪問異常的問題,請根據信任級別的限制調整您的程序。
以下是判斷程序是否運行在中等安全模式的代碼:
|
新聞熱點
疑難解答