共用方式為


IT 組織的範例程式碼接受檢查清單

以 Microsoft Office SharePoint Server 2007 為基礎的網站通常包含自訂解決方案。可新增自訂解決方案以自訂網站的功能,讓 Office SharePoint Server 2007 富有能力與彈性。但在 SharePoint 伺服器陣列中執行之設計或實作不佳的可執行模組,其傷害所及層面之廣,甚至超出它規劃使用的 Web 應用程式範圍。實作不佳的自訂解決方案會帶來安全性或效能風險、增加支援成本、複雜化部署以及降低產能。

因為在 SharePoint 伺服器陣列中安裝自訂解決方案,會有正面或負面的影響,所以建議您先仔細評估所有的自訂解決方案,再部署到實際執行環境中。要評估的方面如下:

要求根據一般最佳作法開發解決方案的同時,也建議您請開發人員送出一份檢查清單,以確認其解決方案是否根據最佳作法編碼及測試。

您可以使用下列範例程式碼驗收檢查清單,以利確定部署的解決方案可以提供預期的利益,卻不會使企業曝露在不必要的風險之下。請以此清單作為您自己的檢查清單起點,以確認送出供部署的解決方案品質。解決方案開發之後,您的程式碼驗收檢查清單除提供檢查外,還可當成良好的訓練工具。在開發人員實作其自訂項目之前,將此清單交付他們,可傳達您對他們將要開發及送出之解決方案品質的期望。

重要

本範例檢查清單僅供參考。不表示所有程式碼驗收問題全囊括在本檢查清單中,或貴組織不需要其他適用的檢測方法。本檢查清單不為任何明示或默示保證。

本主題內容:

SharePoint 開發最佳作法資源

本節包含的資源清單可提供給開發人員,協助其設計及實作符合您 IT 需求 (實用性、支援能力、效能及安全性) 的解決方案。

程式碼驗收檢查清單

本節將程式碼驗收檢查清單分成下列類別:安全性、工作階段管理、驗證、機密資料、例外處理、網頁組件、文件、一般軟體開發最佳作法。如需整份檢查清單的可列印及可修改版本,請參閱程式碼驗收檢查清單可列印版本 (https://go.microsoft.com/fwlink/?linkid=125134&clcid=0x404)。

注意

本文件所提供的檢查清單係為範例,可供您根據貴企業的需求用來開發您專屬的程式碼驗收檢查清單。使用這些清單作為開發您專屬檢查清單的起點。

安全性

程式碼驗收檢查清單一節所包含的建議項目,有助於確定送出至 SharePoint 環境進行部署的解決方案係使用最佳安全性作法開發。

[ ]

應用程式使用包含清單 (已知有效且安全的輸入),不使用排除清單 (拒絕已知惡意或危險的輸入)。

[ ]

向用戶端顯示時,所有使用者輸入都是使用 IOSec 編碼。

[ ]

字元編碼係由伺服器設定 (建議使用 ISO-8859-1)。

[ ]

純文字密碼不會出現在 Web.config、Machine.config 或任何包含組態設定的檔案中。使用 Aspnet_setreg.exe 及 Trustee 等公用程式或在 IIS 6.0 或 IIS 7.0 之 AppPool 的身分識別設定加密認證。

[ ]

如果 Cookie 包含機密資料,則會標示為安全。

[ ]

在網頁組件及其他自訂項目中,保護免受跨站台指令碼處理或 SQL 資料隱碼攻擊的輸入介面,包括界限檢查、輸入資料完整性檢查和適當的例外處理。

[ ]

設計會處理潛在的規範化問題。

[ ]

避免使用 AllowUnsafeUpdates。請使用 ValidateFormDigest() 並視需要使用提升權限以與 SharePoint 物件互動。如果一定要使用 AllowUnsafeUpdates,請務必在 try-catch-finally 區塊中將 AllowUnsafeUpdates 設為 False,或使用 Dispose() 方法 (視 IDisposable 介面需要) 避免安全性問題。

工作階段管理

程式碼驗收檢查清單一節所包含的建議項目,有助於確定送出至 SharePoint 環境進行部署的解決方案係使用最佳作法開發,以管理工作階段。

[ ]

工作階段狀態是增強式、無法預測及受保護免於未經授權存取或重新執行攻擊。

[ ]

工作階段存留時間的最長閒置時間限制為 30 分鐘。

[ ]

工作階段識別項不會在 URL 中傳遞,且不會使用 ASP.NET 功能 (Cookieless 工作階段)。

[ ]

工作階段狀態服務若不使用即予停用。

驗證

程式碼驗收檢查清單一節所包含的建議項目,有助於確定送出至 SharePoint 環境進行部署的解決方案係使用最佳作法開發,以驗證輸入。

[ ]

輸入驗證會在所有識別的進入點套用 (包括表單欄位、querystring、cookie、HTTP 標頭及 Web 服務參數)。

[ ]

ASP.NET validateRequest 選項已啟用 (如可行)。

[ ]

會驗證資料的類型、長度、格式及範圍。

[ ]

安全性不是依賴用戶端驗證。而是在伺服器端執行驗證。

[ ]

應用程式自始至終都使用標準輸入驗證,如 RegEx。

機密資料

程式碼驗收檢查清單一節所包含的建議項目,有助於確定送出至 SharePoint 環境進行部署的解決方案係使用最佳作法開發,以保護機密資料。

[ ]

應用程式不會以純文字記錄機密資料。

[ ]

機密資料不會儲存在 Cookie 中。

[ ]

機密資料不會儲存在未加密的隱藏表單欄位或查詢字串中。它會使用伺服器端的狀態管理加以維護。

[ ]

傳輸期間使用 SSL、有加密的 IPSEC 或傳送前先在應用程式層加密,保護機密資料。

[ ]

機密資料不會快取。輸出快取預設關閉。

[ ]

透過電子郵件傳輸的機密資料,使用 S/MIME 加密或資訊版權管理 (IRM),視預定的收件者而定。

例外處理

程式碼驗收檢查清單一節所包含的建議項目,有助於確定送出至 SharePoint 環境進行部署的解決方案係使用最佳作法開發,以處理例外。

[ ]

應用程式自始至終都使用標準化的方法應付結構化錯誤及例外處理。

[ ]

錯誤處理程式碼繼承 SPException 類別,讓錯誤維持一致的 SharePoint 外觀與風格。

[ ]

應用程式在發生錯誤與例外時,會以安全的方式失敗。

[ ]

例外狀況不允許使用者略過安全性檢查執行權限程式碼。

[ ]

應用程式將一般自訂錯誤訊息傳回給用戶端。

[ ]

程式碼使用例外處理。程式碼只偵測您已知的例外。例如,除非您再次擲出錯誤,否則不使用 try{} catch(Exception ex){}

[ ]

如果程式碼使用例外狀況篩選器,在篩選執行順序方面 (先篩選再執行 finally 區塊) 即不那麼重要。

[ ]

應用程式錯誤不包含機密資訊或可用來攻擊錯誤的資訊。

網頁組件

程式碼驗收檢查清單一節所包含的建議項目,有助於確定送出至 SharePoint 環境進行部署的解決方案係使用最佳作法開發,以開發網頁組件。

[ ]

自訂網頁組件 (包括資源檔案) 是包含在 SharePoint 功能內,封裝為 SharePoint 解決方案以進行部署。

[ ]

要加以部署的網頁組件設定,讓管理員能夠靈活部署到 Web 應用程式層級或較低的層級。

[ ]

您要使用 SharePoint 網頁組件基礎結構的連線介面標準集合,讓網頁組件在執行階段互相交換資訊。

[ ]

儘可能在提供協力廠商網頁組件解決方案的原始程式碼時,隨附適當文件,以確保良好的技術支援。

[ ]

所有自訂網頁組件都會使用 SharePoint 架構,以確保整個應用程式在功能方面的行為一致,例如單一登入、功能部署等。

文件

您應該要求適當的文件,以確保要求您部署的自訂項目是可安裝、受支援及經過完善測試的。而且,文件要提出自訂項目產生之所有錯誤的正確描述與診斷。程式碼驗收檢查清單一節所包含的建議項目,有助於確定送出至 SharePoint 環境進行部署的解決方案係使用最佳作法開發,以進行記載。

[ ]

自訂項目附有安裝指示,會詳細說明如何安裝與解除安裝套件。也附有與該解決方案安裝有關的架構圖表。若無法回復解決方案,安裝指示中一定會有說明,讓您可以討論風險與準備系統修復計劃。

[ ]

自訂伴隨測試文件和結果。

[ ]

自訂伴隨所有相依性的清單。這可能包括帳戶/密碼、Web 服務、資料庫、其他解決方案或功能、修補程式、工具組或文件庫,以及其他相依性。

[ ]

提供所有自訂項目產生事件項目以及要執行動作的清單。這可能會以錯誤碼表格顯示,在表格中提供每個代碼的嚴重性和根本原因。

[ ]

或者提供原始程式碼以加速 IT 組織的驗證和測試。

[ ]

為之前已部署之自訂項目升級的自訂項目,附有說明變更、升級自訂項目考慮事項及回復指示的文件。

一般軟體開發最佳最佳作法

程式碼驗收檢查清單一節所包含的建議項目,有助於確定送出至 SharePoint 環境進行部署的解決方案係使用最佳作法開發,以開發軟體。

[ ]

組件有強式名稱 (動態產生的 ASP.NET 網頁組件目前無法有強式名稱)。

[ ]

您要使用延遲簽署的方式,保護與限制在強式名稱與簽署程序中使用的私密金鑰。

[ ]

組件包含宣告式安全性屬性 (具有 SecurityAction.RequestMinimum) 以指定最低權限需求。

[ ]

高權限組件會與較低權限組件區隔。

[ ]

若要在部分信任的環境中使用組件 (例如,從部分信任的 Web 應用程式呼叫組件),則權限程式碼即位於其他組件中。

[ ]

您是依賴原生設定檔支援應用程式,而不是變更 Web.config 的設定。

[ ]

您要使用 .NET Framework 2.0、3.0 或 3.5。

[ ]

您要使用單一的 .NET Framework 版本。不使用混合的多種版本。

[ ]

程式碼與 64 位元相容。

[ ]

應用程式不嘗試直接存取任何 SharePoint 資料庫。SharePoint 資料庫的資料存放區只使用 SharePoint 物件模型加以更新。

[ ]

您要避免寫入程式碼字串與標籤。您要改用資源或語言檔案。

[ ]

參照 SPWeb 或 SPSite 物件時,您是運用 using 陳述式或使用 .Dispose 方法的明確呼叫,確保正確使用與處置記憶體物件。

[ ]

適當使用快取可降低不必要的來回行程。網頁組件要將快取到期 (持續時間) 公開為網頁組件屬性。

[ ]

封裝解決方案時,要為解決方案包含程式碼存取安全性原則,並在必要時,透過解決方案將組件包含在安全控制項清單中。

[ ]

記錄程式碼時,要使用入口網站記錄檔類別記錄 SharePoint 統一登入服務 (ULS) 記錄。

[ ]

如果必須使用遠端程式碼更新多個清單項目,請使用 Web 服務更新清單項目。如果必須使用本機 OM 程式碼一次更新多個項目,則只能使用 SPListItem.Update()。

[ ]

使用 SPListItemCollection 的 Count 屬性時,僅需呼叫一次並接著儲存在迴圈可參照的變數中。您不必在迴圈內呼叫它。

[ ]

解決方案使用 AppSettings 物件實作 XML 對應 (使用 .NET 2.0、3.0 或 3.5 的設定持續架構即可提供)。解決方案避免建立自訂 XML 檔案及強型別物件執行 XML 對應。

[ ]

事件記錄檔提供安裝與部署記錄,以在安裝和解除安裝期間啟用適當的操作疑難排解。

下載本書

本主題隨附於下列可下載的叢書中,以便於閱讀與列印:

請參閱 Office SharePoint Server 2007 的可下載內容 上提供的完整叢書清單。