一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - ASP.NET中等安全模式的一些經驗分享

ASP.NET中等安全模式的一些經驗分享

2019-07-04 14:27服務器之家 ASP.NET教程

如果你正在開發一個通用型的Web產品,比如BBS、CMS、BLOG這類的,那么,建議你閱讀以下本篇文章。

非通用型的Web程序或產品,通常不會和ASP.NET中等安全模式打交道,因為面對的用戶群體會比較固定,或者部署環境是可以由程序提供者決定的。 
但在做通用型的Web產品的時候,你就要和各種人打交道了,有的站長用的是國外空間,比如GoDaddy,外國的空間商通常會把ASP.NET代碼執行權限控制在中等安全模式。 
而在中等安全模式下,很多我們習以為常的事情都是做不了的。 

中等安全模式是什么? 
可能很多人都沒接觸過中等安全模式,我在參與bbsmax項目之前,我也不知道有中等安全模式這么個東西。 
簡單來說,ASP.NET提供了一個簡單設置代碼執行權限的方案,叫做“信任級別”。 
它默認提供5種信任級別,分別是:FullTrust、High、Medium、Low、Minimal。 
每個信任級別的設置,分別對應于一組代碼權限設置。 
這個方案,讓網站部署者可以通過web.config快速設置網站的托管代碼執行權限。 
通過對web.config的<system.web>/<trust>節點的level屬性值進行設置,就可以將ASP.NET程序設置到不同的信任級別。 
ASP.NET安裝完,所有網站默認都是FullTrust信任級別,也是最高信任級別。 
本文說的“中等安全模式”就是對應于Medium信任級別。 
因為托管代碼執行權限模型不是本文討論的重點,所以我這里只做簡單的說明,不深入討論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外,涉及到非托管代碼調用的,也都廢掉了。 
7. Access數據不能用OleDb連接了,因為中等安全模式下,OleDbClient是不能用的,你只能用ODBC數據源。 
所以,如果要考慮允許讓用戶把程序部署到中等安全模式下,那就越早做中等安全模式的兼容性測試越好。 
因為很多不能用的東西,都是涉及到基礎結構的。 
比如,SQLite和Access不能用,你的程序如果正巧就只做這兩個數據庫的版本,咋辦? 
比如,文件下載不能通過Response寫文件流的方式,你的程序正巧又是這么做防盜鏈,咋辦? 

中等安全模式要求那么苛刻,怎么對付? 
只能繞道走了,要不然怎么辦?方法還是有的,得不斷嘗試。 
VirtualPathProvider不能用,BuildProvider也不能用,但是又需要有自己的一套模板語法。那只好在頁面訪問前生成aspx頁面,再做URL重寫了。 
說起來很簡單,就一句話。但是這中間我不知道寫了多少代碼,做了多少次試驗,才找到最佳方案。 
所以,你的方法還是得你自己找。 
以下是判斷程序是否運行在中等安全模式的代碼: 

復制代碼代碼如下:


if (SecurityManager.IsGranted(new AspNetHostingPermission(AspNetHostingPermissionLevel.Medium))) 


如果有遇到不是必須執行的邏輯,比如獲取程序內存占用率或者大文件上傳,那就可以先判斷下,再決定是否調用。 
根據資料顯示,把程序集部署到GAC中,可以獲得FullTrust級別的權限,不過我沒有實際試過。 

附錄A

 

參考鏈接:

MSDN 《trust 元素(ASP.NET 設置架構)》

MSDN 《How To: Use Medium Trust in ASP.NET 2.0》

《Check Code Access Security Permissions Granted to your asp.net web application》

 

附錄B


辰 提供的文件下載方案: 

復制代碼代碼如下:


protected override void OnInit(EventArgs e) 

Response.ContentType = "application/octet-stream"; 
using (FileStream stream = File.Open(Server.MapPath("~/test.txt"), FileMode.Open)) 

BinaryWriter writer = new BinaryWriter(Response.OutputStream); 
byte[] buffer = new byte[1024]; 
int l = 0; 
while ((l = stream.Read(buffer, 0, buffer.Length)) > 0) 

writer.Write(buffer, 0, l); 


延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲激情网站 | 操日日| 国产激情视频在线 | 国产视频一区二区 | 丁香五香天堂 | 日本道三区播放区 | 亚洲无线一二三四区 | 蛮荒的童话未删减在线观看 | 欧美疯狂做爰3xxx | 精品成人一区二区 | x8x8在线观看 | 日本天堂影院在线播放 | 亚洲26uuuu最新地址 | 男人天堂网www | 99热这里只有精品在线播放 | 369手机看片 | 爽好紧别夹宝贝叫大声点护士 | 爽爽窝窝午夜精品一区二区 | 8x在线永久成人影院 | 双性受合不垅腿攻np | 黄德维| 99久久999久久久综合精品涩 | 性xxxx18学生第一次出血 | 性欧美hd | 亚洲天堂视频在线观看 | chinaese中国女人厕所小便 | 亚洲国产精品久久卡一 | 免费国产高清视频 | 精品日产1区2卡三卡麻豆 | 暖暖 免费 高清 日本 中文 | 我与肥熟老妇的性事 | 丝瓜视频成人在线观看 | 美女舒服好紧太爽了视频 | 国产91影院 | 亚洲高清视频免费 | 国色天香社区视频在线观看免费完整版 | 蜜桃成熟3在线观看 | 国产主播福利在线观看 | 邪恶肉肉全彩色无遮盖 | 狠狠色婷婷 | 精品一区在线 |