安全性 (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 網際網路網站提供關於建立安全且可靠軟體的深入資訊。

請參閱

概念

C# 程式設計手冊

安全性工具

其他資源

機器碼和 .NET Framework 程式碼中的安全性

安全程式碼撰寫方針