自定義服務(wù)器控件是擴(kuò)展 ASP.NET Web 服務(wù)器控件的功能的一種方式。下文提供了針對(duì)自定義服務(wù)器控件的用戶和開發(fā)人員的基本安全準(zhǔn)則。有關(guān)創(chuàng)建自定義服務(wù)器控件的更多信息,請(qǐng)參見開發(fā)自定義 ASP.NET 服務(wù)器控件。
IDE(如 Microsoft Visual Studio 2005)簡(jiǎn)化了自定義控件的使用及開發(fā)。但是,無論使用哪一 IDE,下面列出的安全準(zhǔn)則均適用。
有關(guān) ASP.NET Web 應(yīng)用程序安全性的常規(guī)信息,請(qǐng)參見 ASP.NET Web 應(yīng)用程序安全性。
針對(duì)自定義服務(wù)器控件用戶的準(zhǔn)則
您可以通過多種方式在 Web 應(yīng)用程序中使用自定義服務(wù)器控件,例如,可以將源代碼文件直接放在 Web 應(yīng)用程序的 App_Code 文件夾中,從全局程序集緩存使用控件,或者使用通過自動(dòng)安裝程序(如 Visual Studio 內(nèi)容安裝程序)安裝的社區(qū)組件。無論在何種情況下,都應(yīng)采取防范措施以防止導(dǎo)入惡意代碼或?qū)?IDE 和承載組件的服務(wù)器產(chǎn)生意外但有負(fù)面影響的代碼。
下面提供了自定義服務(wù)器控件的用戶應(yīng)考慮的一些安全準(zhǔn)則。此列表可能不夠全面,但可以從此著手進(jìn)行調(diào)查:
不要使用不熟悉的代碼或不了解其安全隱患的代碼。對(duì)于社區(qū)組件,建議您閱讀可用的發(fā)行者信息并確定是否對(duì)組件進(jìn)行了簽名。
不要僅僅考慮控件的運(yùn)行時(shí)安全性,還要考慮其設(shè)計(jì)時(shí)安全性。
如果可能,在強(qiáng)名稱程序集中使用自定義控件并選擇受信任的發(fā)行者。
使用最少特權(quán)帳戶運(yùn)行包括導(dǎo)入的控件的 ASP.NET Web 應(yīng)用程序。有關(guān)使用具有最低權(quán)限的標(biāo)識(shí)運(yùn)行 ASP.NET 進(jìn)程的更多信息,請(qǐng)參見配置 ASP.NET 進(jìn)程標(biāo)識(shí)。在諸如 Visual Studio 2005 或 Visual Web Developer 速成版這樣的 IDE 中,除非您需要執(zhí)行管理任務(wù),否則以普通用戶的身份而不要以管理員的身份運(yùn)行應(yīng)用程序。
查看承載自定義服務(wù)器控件的服務(wù)器上的操作系統(tǒng)安全性和 Windows 訪問控制列表 (ACL)。例如,應(yīng)確保使用僅具有運(yùn)行應(yīng)用程序所需的最低權(quán)限的標(biāo)識(shí)來運(yùn)行 ASP.NET 進(jìn)程,這樣便可將自定義服務(wù)器控件導(dǎo)致的安全漏洞對(duì)其他承載的應(yīng)用程序的影響降至最低。
另外,查看自定義服務(wù)器控件的權(quán)限,并確保它們遵循文件和文件夾權(quán)限,ASP.NET Web 應(yīng)用程序的標(biāo)識(shí)必須具有該權(quán)限才能正常工作。
使用代碼訪問安全性來限制 Web 應(yīng)用程序(具有自定義服務(wù)器控件)可以訪問的資源和可以執(zhí)行的特權(quán)操作。
使用 .NET Framework 配置工具 (Mscorcfg.msc) 在全局程序集緩存中管理和配置程序集并調(diào)整代碼訪問安全性策略。因?yàn)?Mscorcfg.msc 的用途是幫助高級(jí)管理員執(zhí)行與配置應(yīng)用程序相關(guān)的任務(wù),因此與您的系統(tǒng)管理員合作以確定使用該工具是否符合您的情況。
針對(duì)自定義服務(wù)器控件開發(fā)人員的準(zhǔn)則
作為自定義控件的開發(fā)人員,您應(yīng)遵循 ASP.NET 應(yīng)用程序頁(yè)和控件以及 .NET Framework 中安全性的常規(guī)最佳做法。在許多情況下,自定義服務(wù)器控件的用戶可能不了解所有實(shí)現(xiàn)的詳細(xì)信息或安全隱患。但是,您應(yīng)該通過以下內(nèi)容來計(jì)劃這一事項(xiàng):遵循既定的安全約定,并清楚地指出組件正常工作所需的所有權(quán)限。您可以從 ASP.NET 網(wǎng)站安全性、.NET Framework 開發(fā)人員指南、安全性的基礎(chǔ)概念以及“Patterns and Practices Web site”(模式和做法網(wǎng)站) 中安全性主題來著手對(duì)常規(guī)安全性問題和解決方法進(jìn)行調(diào)查。
設(shè)計(jì)和實(shí)現(xiàn)自定義 Web 服務(wù)器控件后,必須確定將組件提供給用戶的方法。有兩種常用的提供方法:作為程序集提供或作為社區(qū)組件提供。如果將組件作為程序集提供,您應(yīng)對(duì)程序集進(jìn)行簽名(也稱強(qiáng)名稱簽名)。簽名為程序集提供了唯一標(biāo)識(shí),其他軟件可以使用該標(biāo)識(shí)來識(shí)別該程序集并顯式引用該程序集。同時(shí),這一方法還可以提供其他好處,使用程序集編程中對(duì)這些好處進(jìn)行了詳細(xì)介紹。
如果作為具有自動(dòng)安裝過程的社區(qū)組件來提供組件,那么您應(yīng)以加密方式對(duì)組件進(jìn)行簽名。簽名可以通過創(chuàng)建對(duì)特定方唯一的數(shù)字簽名來幫助驗(yàn)證數(shù)據(jù)是否發(fā)自特定方。其中,創(chuàng)建用于 Visual Studio 2005 的社區(qū)組件的一種方法是:使用 Visual Studio 內(nèi)容安裝程序并創(chuàng)建可以對(duì)其進(jìn)行簽名的 .vsi 文件。
下面提供了在開發(fā)自定義服務(wù)器控制組件時(shí)應(yīng)考慮的一些安全準(zhǔn)則。此列表可能不夠全面,但可以從此著手進(jìn)行調(diào)查:
與自定義服務(wù)器控件一同提供有關(guān)如何使用這些控件的說明,以及對(duì)這些控件正常運(yùn)行所需的資源和權(quán)限的要求。
對(duì)組件進(jìn)行數(shù)字簽名
如果將自定義控件打包為程序集,則使用強(qiáng)名稱對(duì)該程序集進(jìn)行簽名。有關(guān)更多信息,請(qǐng)參見創(chuàng)建和使用具有強(qiáng)名稱的程序集。如果使用自動(dòng)安裝程序(如 Visual Studio 內(nèi)容安裝程序),您仍需要對(duì)組件進(jìn)行簽名。 有關(guān)更多信息,請(qǐng)參見 How to: Package Community Components to Use the Visual Studio Content Installer 和 如何:打包社區(qū)組件以使用 Visual Studio 內(nèi)容安裝程序.
遵循代碼中的異常管理的最佳做法
如果您希望頁(yè)開發(fā)人員將自定義控件添加到可視化設(shè)計(jì)器的工具箱,則將它們拖到設(shè)計(jì)圖面上,并在屬性瀏覽器中訪問其屬性和事件,而且,除了要考慮運(yùn)行時(shí)安全性外,還要考慮設(shè)計(jì)時(shí)安全性。有關(guān)更多信息,請(qǐng)參見保證自定義控件設(shè)計(jì)器組件的安全。
了解對(duì) Web 應(yīng)用程序頁(yè)和控件的最高威脅,包括代碼注入、信息泄漏、會(huì)話劫持、身份欺騙、參數(shù)操作和網(wǎng)絡(luò)監(jiān)聽。為此,應(yīng)在部署前完成對(duì)組件的威脅建模分析。
您可能感興趣的文章:- asp.net自定義控件代碼學(xué)習(xí)筆記
- asp.net 自定義控件實(shí)現(xiàn)無刷新上傳圖片,立即顯示縮略圖,保存圖片縮略圖
- Asp.net 動(dòng)態(tài)加載用戶自定義控件,并轉(zhuǎn)換成HTML代碼
- asp.net DropDownList自定義控件,讓你的分類更清晰
- asp.net中使用自定義控件的方式實(shí)現(xiàn)一個(gè)分頁(yè)控件的代碼
- asp.net自定義控件回發(fā)數(shù)據(jù)實(shí)現(xiàn)方案與代碼
- Asp.net清空控件值的方法(可自定義控件類型)
- 把某個(gè)asp.net 控件替換成自定義控件的方法
- asp.net自定義控件中注冊(cè)Javascript問題解決方案
- 淺談ASP.NET中最簡(jiǎn)單的自定義控件
- asp.net動(dòng)態(tài)加載自定義控件的方法