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