安全性 (C# 程式設計手冊)
更新:2007 年 11 月
安全性是每個 C# 應用程式不可或缺的環節,而且在開發的每個階段都必須加以考量,不能僅在設計和實作完成後才考慮。
C# 特定安全性建議
此清單並不是要詳細列出所有可能發生的安全性問題,而是著重在一些 C# 開發人員需要注意的常見問題上。
使用 checked 關鍵字控制整數類資料型別算術運算和轉換的溢位檢查內容。
參數永遠使用最嚴格的資料型別。例如,在將值傳遞至描述資料結構大小的方法時,使用不帶正負號的整數 (Unsigned Integer) 而非整數。
請不要根據檔案名稱做決定。檔案名稱可能使用各種方式表示,而您可能會忽略掉某個特定檔案的測試。
永遠不要將密碼或其他機密資訊以硬式編碼的方式寫入應用程式。
請永遠要驗證用來產生 SQL 查詢的輸入。
驗證方法中的所有輸入。System.Text.RegularExpressions 命名空間中的規則運算式方法對於確認輸入格式是否正確 (例如電子郵件地址) 非常有用。
不要顯示例外狀況資訊,因為這項資訊會為可能的攻擊者提供很好的線索。
確定應用程式能以最低可能的權限執行,只有少數應用程式需要使用者登入為系統管理員。
不要使用自己的加密演算法。使用 System.Security.Cryptography 類別。
為組件指定強式名稱 (Strong Name)。
請不要在 XML 或其他組態檔中儲存機密資訊。
仔細檢查包裝機器碼的 Managed 程式碼。請確認機器碼是否安全。
使用從應用程式之外傳遞的委派時要小心。
在組件上執行 Visual Studio 程式碼分析工具,以確定能符合 Microsoft .NET Framework 設計方針。此工具也能找到並警告超過 200 種程式碼缺失。如需詳細資訊,請參閱偵測和改正 Managed 程式碼的缺失。
其他安全性資源
下列 Microsoft 網際網路網站提供關於建立安全且可靠軟體的深入資訊。