IT 組織的範例程式碼接受檢查清單
以 Microsoft Office SharePoint Server 2007 為基礎的網站通常包含自訂解決方案。可新增自訂解決方案以自訂網站的功能,讓 Office SharePoint Server 2007 富有能力與彈性。但在 SharePoint 伺服器陣列中執行之設計或實作不佳的可執行模組,其傷害所及層面之廣,甚至超出它規劃使用的 Web 應用程式範圍。實作不佳的自訂解決方案會帶來安全性或效能風險、增加支援成本、複雜化部署以及降低產能。
因為在 SharePoint 伺服器陣列中安裝自訂解決方案,會有正面或負面的影響,所以建議您先仔細評估所有的自訂解決方案,再部署到實際執行環境中。要評估的方面如下:
- 解決方案的開發、測試與試驗,是否與<設計與建置 Office SharePoint Server 2007 網站>及實作 Microsoft Office SharePoint Server 2007 及 Windows SharePoint Services 3.0 解決方案 (英文) 等白皮書中所描述的最佳作法一致?
要求根據一般最佳作法開發解決方案的同時,也建議您請開發人員送出一份檢查清單,以確認其解決方案是否根據最佳作法編碼及測試。
您可以使用下列範例程式碼驗收檢查清單,以利確定部署的解決方案可以提供預期的利益,卻不會使企業曝露在不必要的風險之下。請以此清單作為您自己的檢查清單起點,以確認送出供部署的解決方案品質。解決方案開發之後,您的程式碼驗收檢查清單除提供檢查外,還可當成良好的訓練工具。在開發人員實作其自訂項目之前,將此清單交付他們,可傳達您對他們將要開發及送出之解決方案品質的期望。
重要
本範例檢查清單僅供參考。不表示所有程式碼驗收問題全囊括在本檢查清單中,或貴組織不需要其他適用的檢測方法。本檢查清單不為任何明示或默示保證。
本主題內容:
SharePoint 開發最佳作法資源
程式碼驗收檢查清單
程式碼驗收檢查清單可列印版本 (https://go.microsoft.com/fwlink/?linkid=125134&clcid=0x404)
SharePoint 開發最佳作法資源
本節包含的資源清單可提供給開發人員,協助其設計及實作符合您 IT 需求 (實用性、支援能力、效能及安全性) 的解決方案。
Microsoft Office SharePoint Server 2007 SDK (英文) (https://go.microsoft.com/fwlink/?linkid=72208&clcid=0x404)
歡迎使用 Windows SharePoint Services 3.0 SDK (英文) (https://go.microsoft.com/fwlink/?linkid=113927&clcid=0x404)
在 Windows SharePoint Services 3.0 中程式碼的開發工具與技術 (英文) (https://go.microsoft.com/fwlink/?linkid=123413&clcid=0x404)
使用 ASP.Net 2.0 網頁組件與 WSS 3.0 (英文) (https://go.microsoft.com/fwlink/?linkid=123429&clcid=0x404)
最佳作法:使用 SharePoint 物件模型的常見程式碼問題 (英文) (https://go.microsoft.com/fwlink/?linkid=123414&clcid=0x404)
Windows SharePoint Services 開發人員中心 (英文) (https://go.microsoft.com/fwlink/?linkid=123428&clcid=0x404)
MSDN 網路廣播:應用程式安全性要點 (3 之 1):安全通訊 (200 級) (https://go.microsoft.com/fwlink/?linkid=123430&clcid=0x404)
SharePoint Server 2007 開發人員入口網站 (https://go.microsoft.com/fwlink/?linkid=119449&clcid=0x404)
Microsoft Anti-Cross Site Scripting Library V1.5 (英文) (https://go.microsoft.com/fwlink/?linkid=123431&clcid=0x404)
改善 Web 應用程式安全性:威脅與對策 (英文) (https://go.microsoft.com/fwlink/?linkid=123432&clcid=0x404)
例外管理架構指南 (英文) (https://go.microsoft.com/fwlink/?linkid=123433&clcid=0x404)
SharePoint 產品及技術白皮書:實作 Microsoft Office SharePoint Server 2007 及 Windows SharePoint Services 3.0 解決方案 (英文) (https://go.microsoft.com/fwlink/?linkid=114834&clcid=0x404)
如何以程式設計的方式測試與 ASP.NET 相關的規範化問題 (https://go.microsoft.com/fwlink/?linkid=123434&clcid=0x404)
驗證 ASP.NET 伺服器控制項 (英文) (https://go.microsoft.com/fwlink/?linkid=123435&clcid=0x404)
MSDN 網路廣播:鑽研伺服器端狀態管理 (https://go.microsoft.com/fwlink/?linkid=123436&clcid=0x404)
SharePoint 產品及技術自訂原則 (https://go.microsoft.com/fwlink/?linkid=92311&clcid=0x404)
SharePoint 產品及技術自訂最佳作法 (英文) (https://go.microsoft.com/fwlink/?linkid=123984&clcid=0x404)
程式碼驗收檢查清單
本節將程式碼驗收檢查清單分成下列類別:安全性、工作階段管理、驗證、機密資料、例外處理、網頁組件、文件、一般軟體開發最佳作法。如需整份檢查清單的可列印及可修改版本,請參閱程式碼驗收檢查清單可列印版本 (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,請務必在 |
工作階段管理
程式碼驗收檢查清單一節所包含的建議項目,有助於確定送出至 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 外觀與風格。 |
[ ] |
應用程式在發生錯誤與例外時,會以安全的方式失敗。 |
[ ] |
例外狀況不允許使用者略過安全性檢查執行權限程式碼。 |
[ ] |
應用程式將一般自訂錯誤訊息傳回給用戶端。 |
[ ] |
程式碼使用例外處理。程式碼只偵測您已知的例外。例如,除非您再次擲出錯誤,否則不使用 |
[ ] |
如果程式碼使用例外狀況篩選器,在篩選執行順序方面 (先篩選再執行 |
[ ] |
應用程式錯誤不包含機密資訊或可用來攻擊錯誤的資訊。 |
網頁組件
程式碼驗收檢查清單一節所包含的建議項目,有助於確定送出至 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 物件時,您是運用 |
[ ] |
適當使用快取可降低不必要的來回行程。網頁組件要將快取到期 (持續時間) 公開為網頁組件屬性。 |
[ ] |
封裝解決方案時,要為解決方案包含程式碼存取安全性原則,並在必要時,透過解決方案將組件包含在安全控制項清單中。 |
[ ] |
記錄程式碼時,要使用入口網站記錄檔類別記錄 SharePoint 統一登入服務 (ULS) 記錄。 |
[ ] |
如果必須使用遠端程式碼更新多個清單項目,請使用 Web 服務更新清單項目。如果必須使用本機 OM 程式碼一次更新多個項目,則只能使用 SPListItem.Update()。 |
[ ] |
使用 SPListItemCollection 的 Count 屬性時,僅需呼叫一次並接著儲存在迴圈可參照的變數中。您不必在迴圈內呼叫它。 |
[ ] |
解決方案使用 AppSettings 物件實作 XML 對應 (使用 .NET 2.0、3.0 或 3.5 的設定持續架構即可提供)。解決方案避免建立自訂 XML 檔案及強型別物件執行 XML 對應。 |
[ ] |
事件記錄檔提供安裝與部署記錄,以在安裝和解除安裝期間啟用適當的操作疑難排解。 |
下載本書
本主題隨附於下列可下載的叢書中,以便於閱讀與列印:
請參閱 Office SharePoint Server 2007 的可下載內容 上提供的完整叢書清單。