ASP.NET控件設計器使用淺析
ASP.NET控件設計器使用有幾點需要注意的呢?
一、ASP.NET控件設計器使用的方案
有兩種可能使用ASP.NET控件設計器使用的常見方案:開發自定義控件和開發可視設計工具。
如果開發自定義 Web 服務器控件,可以創建關聯的設計器來提高頁面開發人員在設計時配置控件的能力。如果該控件可能被許多頁面開發人員重用,則該方案尤其有用。例如,可能創建自定義圖表控件。如果提供關聯的控件設計器,則不同的 Intranet 頁面開發人員中每個人都可以用不同的樣式在頁面上配置控件。
如果開發一種與 Visual Studio 2005 或 Microsoft FrontPage 類似的可視化 Web 設計工具,則可以使用控件設計器承載組件。這將使您的工具能夠提供服務和與控件設計器交互,從而為自定義控件提供設計時呈現。
有關 .NET Framework 設計器結構的更多信息,請參見 設計時結構。有關為自定義 Web 服務器控件創建自己的設計器的詳細信息,請參見 演練:為 Web 服務器控件創建基本控件設計器。有關創建具有服務和操作列表的自定義控件設計器以提供設計時用戶界面 (UI) 的詳細信息,請參見 具有操作表和服務的示例控件設計器。
二、保證自定義ASP.NET控件設計器使用的安全
當控件位于設計視圖中時,設計器組件將會處理屬性更改,并在設計宿主(例如 Visual Studio)中呈現標記。設計時,控件的設計器組件與其設計宿主在同一個信任級別上運行。設計器組件可能會執行下列操作:訪問數據庫,調用遠程服務器上的網站,創建文件并將其寫入開發人員的計算機,發送電子郵件,以及執行其他程序集中的代碼。
本節中的信息介紹了一些最佳做法,可幫助于您提高控件設計器功能的安全性。
除了遵循編碼和配置的最佳做法來幫助提高應用程序的安全性之外,請確保利用 Microsoft Windows 和 Internet 信息服務 (IIS) 的最新安全更新,使應用程序服務器始終保持最新。您還應當確保具有已安裝在計算機上的任何商用自定義控件包的最新版本。
在 Michael Howard 和 David LeBlanc 編寫的 Writing Secure Code(《編寫安全代碼》)一書中,您可以找到有關編寫安全代碼和保護應用程序安全的最佳做法的更多詳細信息。有關其他指南,請參見 Microsoft Patterns and Practices(Microsoft 模式和實踐)網站和 指南與最佳做法。
◆自定義控件用戶面臨的安全問題
您應該清楚,來自未知源的自定義控件可能包含將您計算機中的敏感數據在網上公開或在設計時運行惡意代碼的設計器。不能使用代碼訪問配置來限制控件設計器的訪問,因為這些設計器始終必須以完全信任級別在設計宿主中運行。有關信任級別的更多信息,請參見 ASP.NET 信任級別和策略文件。有關代碼訪問安全性的更多信息,請參見 代碼訪問安全性介紹。
◆自定義控件開發人員面臨的安全問題
使用類和成員的配置屬性將權限限定為控件功能所需的最低級別的做法,并不能對設計器組件提供足夠的安全防范,因為這些組件必須以完全信任級別在設計宿主中運行。
如有可能,在預覽數據控件(如 GridView 控件)時,請不要使用數據庫中的實時數據來顯示示例結構。這會暴露數據庫中可能敏感的數據 應改使示例數據結構來構建預覽數據。
◆設計宿主開發人員面臨的安全問題
如果您要開發設計宿主(如 Visual Studio),則應檢查 HTML 標記、文本以及從設計器返回的其他數據是否存在安全風險,只有在不存在安全風險時,才對其進行顯示。此外,將 HTML 標記字符串和設計器區域的大小限定為易于管理的大小。有關 HTML 驗證的更多信息,請參見 在 ASP.NET 網頁中驗證用戶輸入
三、ASP.NET控件設計器使用支持多種開發工具
Microsoft Visual Web Developer 支持在本主題中討論的所有功能,但是其他開發工具可能不支持。可能不被支持的功能的一些示例為:
◆區域。
控件開發人員可以檢查 SupportsRegions 屬性和相應修改控件設計器的行為。
◆主機服務。
使用該服務之前,控件開發人員可以檢查 GetService 方法的返回值。有關示例,請參見 如何:將服務和操作列表用于控件設計器。
◆區域集合。
GetDesignTimeHtml 方法的兩個版本都應該被重寫,因為某些開發工具不支持區域集合。
ASP.NET控件設計器使用基本的使用情況就向你介紹到這里,希望對你了解ASP.NET控件設計器有所幫助。
【編輯推薦】