
課程咨詢: 400-996-5531 / 投訴建議: 400-111-8989
認真做教育 專心促就業(yè)
代碼訪問安全性是保護桌面免受正在通過無接觸部署方式下載的 Windows 窗體應(yīng)用程序影響的關(guān)鍵。此模型通過匹配應(yīng)用程序和應(yīng)該分配給應(yīng)用程序的權(quán)限來工作。在運行時,公共語言運行時從程序集中收集憑證。憑證可以采用代碼源自的 Internet Explorer 區(qū)域(本地磁盤、Intranet、Internet、受信任站點或不受信任站點)的形式,也可采用代碼源自的 URL(簽名使用的私鑰、哈希值、Authenticode 發(fā)布服務(wù)器簽名等等)的形式。使用此憑證,公共語言運行時將程序集分配給相應(yīng)的代碼組或類別。每個代碼組都擁有分配給它的權(quán)限集,說明程序集應(yīng)獲得的權(quán)限,例如能否讀取或?qū)懭氡镜卮疟P、訪問聯(lián)網(wǎng)資源、打印以及訪問環(huán)境變量等等。
默認情況下,.NET Framework 附帶圍繞 Internet Explorer 區(qū)域設(shè)置的代碼組。例如,來自 Intranet 區(qū)域的代碼獲得的權(quán)限很有限,因此無法執(zhí)行文件 IO 訪問。
為了說明安全檢查在起作用,任務(wù)管理可執(zhí)行程序包含一個名為 Read Boot.ini 的工具欄按鈕,該按鈕嘗試訪問 C:\ 盤中的文件。
您可以進行一個簡單的測試,單擊"Read Boot.ini"按鈕,查看當應(yīng)用程序請求 C:\ 根目錄中的文件時會發(fā)生什么情況 - 引發(fā)安全異常,應(yīng)用程序不處理該請求。
異常返回一個文件 IO 權(quán)限異常,說明應(yīng)用程序無法訪問 TaskManagement.exe 請求的特定資源。
使用多程序集應(yīng)用程序的無接觸部署
在本示例應(yīng)用程序中,我們已經(jīng)說明了如何加載單個程序集。通過對 Assemble 對象使用 LoadFrom() 方法,.NET Framework 還可以有效地將多程序集應(yīng)用程序傳入客戶端。
Assemble 類具有 LoadFrom 方法,可以初始化一個對特定程序集的引用。LoadFrom 的參數(shù)是 URL 或文件路徑名。指定 URL 后,.NET Framework 首先通過檢查程序集下載緩存,檢查客戶端是否存在已命名的程序集。如果程序集不在程序集下載緩存中,.NET Framework 將從 Web 服務(wù)器獲取該程序集,并將它的副本置于下載緩存中。這樣,程序集對象即可在代碼中使用。
例如,如果在一個單獨的名為 AboutForm.dll 的程序集中實現(xiàn)了 TaskManagement About Windows 窗體,則可以在用戶請求查看"About"(關(guān)于)對話框時使用 LoadFrom 下載該程序集。這樣,當用戶與應(yīng)用程序交互時,我們只需傳輸應(yīng)用程序所需的代碼。
無接觸部署和 XML Web Service
一個重要的安全限制是,當通過 Web 服務(wù)器分發(fā)應(yīng)用程序時,其域必須與它所依賴的所有 Web 服務(wù)相匹配。例如,如果從 myserver/TaskManagement.exe 啟動 TaskManagement.exe,則只允許使用myserver 上的 XML Web Service.出于安全性方面的考慮,不允許應(yīng)用程序從其他服務(wù)器調(diào)用 Web 服務(wù)。
【免責聲明】本文部分系轉(zhuǎn)載,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點和對其真實性負責。如涉及作品內(nèi)容、版權(quán)和其它問題,請在30日內(nèi)與聯(lián)系我們,我們會予以更改或刪除相關(guān)文章,以保證您的權(quán)益!