淺析使用ADO.NET COM組件
ADO.NET還是比較常用的,于是我研究了一下非托管代碼,在這里拿出來和大家分享一下,希望對大家有用。在CLR外部運行的代碼稱為非托管代碼。因此,安全機制(如CAS)不能應用于非托管代碼。ADO.NET COM組件、ActiveX接口和Win32API函數都是非托管代碼的示例。在執行非托管代碼時應考慮特殊安全注意事項,以便不會危害應用程序的整體安全性。有關更多信息,請參見與非托管代碼交互操作。
#T#.NETFramework可以通過COM互操作提供訪問,因此還支持與現有ADO.NET COM組件的向后兼容。通過使用COM互操作工具導入相關的ADO.NET COM類型,可以將ADO.NET COM組件組件合并到.NETFramework應用程序中。一旦導入后,就可以使用COM類型了。通過將程序集元數據導出到類型庫并將托管組件注冊為ADO.NET COM組件,COM互操作還可以使COM客戶端訪問托管代碼。有關更多信息。
代碼訪問安全性
當今高度連接的計算機系統經常會遇到出自各種來源(可能包括未知來源)的代碼。代碼可能由電子郵件附帶、包含在文檔中或通過 Internet 下載。遺憾的是,許多計算機用戶都親身體驗過惡意移動代碼(包括病毒和蠕蟲)造成的后果,這些代碼可能會損壞或毀壞數據,并會浪費時間和資金。
多數普通安全機制根據用戶的登錄憑據(通常為密碼)賦予用戶權限,并限制允許用戶訪問的資源(通常為目錄和文件)。但是,這種方法無法解決以下幾個問題:用戶從許多來源獲取代碼,這些來源中有一些可能不可靠;代碼可能包含 bug 或具有脆弱性,使它有可能被惡意代碼利用;代碼有時候會執行一些操作,而用戶并不知道它會執行這些操作。
結果,當謹慎且可信的用戶運行惡意軟件或包含錯誤的軟件時,計算機系統可能會損壞,私有數據可能會泄漏。多數操作系統安全機制要求每一段代碼都必須完全受信任(Web 頁的腳本可能除外),然后才可運行。因此,仍需要一種可廣泛應用的安全機制,即使兩個計算機系統之間沒有信任關系,該機制也允許在一個計算機系統上生成的代碼能夠在另一系統上安全地執行。
為了幫助保護計算機系統免受惡意移動代碼的危害,讓來源不明的代碼安全運行,防止受信任的代碼有意或無意地危害安全,.NET Framework 提供了一種稱為“代碼訪問安全性”的安全機制。代碼訪問安全性使代碼可以根據它所來自的位置以及代碼標識的其他方面,獲得不同等級的受信度。代碼訪問安全性還實施不同級別的對代碼的信任,從而最大限度地減少了必須完全信任才能運行的代碼的數量。使用代碼訪問安全性,可以減小惡意代碼或包含錯誤的代碼濫用您的代碼的可能性。
它可以減輕您的責任,因為您可以指定應該允許代碼執行的一組操作,同時還可指定永遠不允許代碼執行的一組操作。代碼訪問安全性還有助于最大限度地減少由于代碼中的安全脆弱性而造成的損害。
所有以公共語言運行庫為目標的托管代碼都會受益于代碼訪問安全性;即使托管代碼不進行一次代碼訪問安全性調用,它也會受益。但是,正如代碼訪問安全性基礎知識中所概述的那樣,所有應用程序都應該進行代碼訪問請求。