共用方式為


保護自訂伺服器控制項

更新:2007 年 11 月

自訂伺服器控制項是一種擴充 ASP.NET Web 伺服器控制項功能的方式。下列基本安全性方針提供給自訂伺服器控制項的使用者和開發人員之用。如需建立自訂伺服器控制項的詳細資訊,請參閱開發自訂的 ASP.NET 伺服器控制項

Microsoft Visual Studio 2005 這類的整合式開發環境 (IDE) 可以簡化自訂控制項的用途及開發,但下列的安全性方針不管使用的 IDE 為何都適用。

如需 ASP.NET Web 應用程式安全性的一般資訊,請參閱 ASP.NET Web 應用程式安全性

自訂伺服器控制項的方針 (適用於使用者)

在 Web 應用程式中有很多方法可以使用自訂伺服器控制項,例如您可以直接將原始程式碼檔放置到 Web 應用程式的 App_Code 資料夾、從全域組件快取中使用控制項,或者使用經由自動化安裝程式 (如 Visual Studio 內容安裝程式) 安裝的社群元件。在所有情況下,您都應該採取預防措施,防止匯入惡意程式碼,或是對 IDE 及裝載 (Host) 元件的伺服器造成無意但不欲之影響的程式碼。

以下提供的是自訂伺服器控制項的使用者需要考量的安全性方針。這份清單雖非完整收羅,但能提供研究的起點:

  • 不要處理不熟悉的程式碼或是不瞭解安全性隱含的程式碼。如果是社群元件,建議您閱讀可用的發行者資訊並判斷元件是否已經過簽署。

  • 不僅要考量控制項的執行階段安全性,更要兼顧設計階段安全性。如需詳細資訊,請參閱保護自訂控制項設計工具元件

  • 只要可能,就在強式名稱的組件中處理自訂控制項,並使用信任的發行者。如需詳細資訊,請參閱 HOW TO:決定組件的完整名稱

  • 以權限最小的帳戶執行含有匯入控制項的 ASP.NET Web 應用程式。如需以權限最小的身分執行 ASP.NET 處理序 (Process) 的詳細資訊,請參閱設定 ASP.NET 處理序識別。在 Visual Studio 2005 或 Visual Web Developer Express 這類的 IDE 中,請以一般使用者身分執行應用程式,但除非需要執行系統管理工作,否則不要以系統管理員身分執行應用程式。

  • 在裝載自訂伺服器控制項的伺服器上,檢閱作業系統安全性和 Windows 存取控制清單 (ACL)。例如,您應該確認是否有以只擁有執行應用程式所需之最小權限的身分執行 ASP.NET 處理序,這樣因自訂伺服器控制項而造成的安全性漏洞對其他裝載應用程式影響最小。如需詳細資訊,請參閱 設定 ASP.NET 處理序識別。此外,也檢閱自訂伺服器控制項的權限,並確認這些權限沒有違反檔案和資料夾的權限,而且 ASP.NET Web 應用程式的識別必須正常運作。如需詳細資訊,請參閱 ASP.NET 所需的存取控制清單 (ACL)

  • 使用程式碼存取安全性,限制 Web 應用程式 (含自訂伺服器控制項) 可以存取的資源與可以執行的授權操作。如需詳細資訊,請參閱 ASP.NET 程式碼存取安全性

  • 使用 .NET Framework 組態工具 (Mscorcfg.msc) 管理和設定全域組件快取中的組件,並調整程式碼存取安全性原則。由於 Mscorcfg.msc 的設計主要是協助高階系統管理員執行與設定應用程式相關的工作,因此請跟您的系統管理員一起工作,以判斷您的情況是否適合使用這個工具。如需詳細資訊,請參閱 .NET Framework 組態工具 (Mscorcfg.msc)

自訂伺服器控制項的方針 (適合於開發人員)

身為自訂控制項的開發人員,您必須針對 ASP.NET 應用程式網頁和控制項中的安全性以及 .NET Framework 中的安全性,遵循一般最佳作法。在許多情況下,自訂伺服器控制項的使用者可能都不知道所有實作 (Implementation) 細節或安全性隱含。您應該對此要有所計畫,除了遵循已制訂的安全性慣例外,也必須清楚界定元件運作所需的所有權限。您可以參考 保護 ASP.NET 網站、《.NET Framework 開發人員手冊》中的重要的安全性概念和位於典範與實例網站中的安全性主題,做為您研究 Web 應用程式之一般安全性問題與解決方式的起點。

在設計並實作自訂 Web 伺服器控制項之後,您必須決定將元件傳遞給使用者的方式。兩個常見的傳遞方法分別是當成組件傳遞、當成社群元件傳遞。如果要將元件當成組件傳遞,必須將組件簽署 (也稱為強式名稱簽署)。簽署可以讓組件有唯一的識別,而其他軟體便能用它來進行識別並加以明確參考,另外還有更多優點,如使用組件設計程式中的說明所示。

如果要將元件當成有自動化安裝程序的社群元件傳遞,則必須以密碼編譯方法將元件簽署。簽署可以協助確認資料的特定出處,只要為其建立唯一的數位簽章即可。使用 Visual Studio 內容安裝程式並建立可簽署的 .vsi 檔案,是建立和 Visual Studio 2005 搭配使用的設群元件的方式之一。

以下提供的是開發自訂伺服器控制項元件時需要考量的安全性方針。這份清單雖非完整收羅,但能提供研究的起點:

  • 提供自訂伺服器控制項的用法說明,以及其正常運作所需的資源條件和權限。

  • 數位簽署元件。如果要將自訂控制項封裝 (Package) 為組件,請以強式名稱簽署組件。如需詳細資訊,請參閱建立和使用強式名稱的組件。如果使用的是自動化安裝程式 (例如 Visual Studio 內容安裝程式),仍然必須簽署元件。

  • 遵循程式碼中例外狀況 (Exception) 管理的最佳作法。如需詳細資訊,請參閱典範與實例網站上的第 10 章 (英文),此為一例。

  • 如果您打算讓網頁開發人員將您的自訂控制項加到視覺化設計工具 (Visual Designer) 的工具箱,再將該控制項拖曳到設計介面上,然後在屬性瀏覽器中存取其屬性和事件,那麼您不僅得考量執行階段安全性,也須兼顧設計階段安全性。如需詳細資訊,請參閱保護自訂控制項設計工具元件

  • 瞭解 Web 應用程式網頁和控制項的頭號威脅,包括程式碼插入、資訊洩漏、工作階段 (Session) 搶奪、身分欺騙、參數竄改和網路竊聽。為遏止威脅,請在部署前完成元件的威脅模型分析。如需詳細資訊,請參閱位於典範與實例網站中的威脅模型 Web 應用程式 (英文) 主題。

請參閱

概念

保護自訂控制項設計工具元件

其他資源

典範與實例網站

建立和使用強式名稱的組件

使用組件設計程式

ASP.NET Web 應用程式安全性

開發自訂的 ASP.NET 伺服器控制項