セキュリティ (C# プログラミング ガイド)
更新 : 2007 年 11 月
セキュリティは、すべての C# アプリケーションにとって必要な側面であり、設計や実装が完了したときだけでなく、開発のすべての段階で考慮する必要があります。
セキュリティに関する C# 固有の推奨事項
以下に列挙した項目は、セキュリティ上の問題をすべて網羅したものではありません。C# 開発者のために一般的な問題に焦点を絞っています。
整数型の算術演算および変換に対してオーバーフロー チェック コンテキストを制御するには、checked キーワードを使用してください。
パラメータには、必ず最も制限されたデータ型を使用してください。たとえば、データ構造体のサイズを表す値をメソッドに渡すときは、整数ではなく、符号なし整数を使用してください。
ファイル名に基づいて判断しないようにします。ファイル名はさまざまな方法で表現される可能性があり、特定のファイルに対するテストが省略される可能性があります。
パスワードやその他の機密情報は、絶対にアプリケーションにハードコーディングしないでください。
SQL クエリの生成に使用される入力は、必ず検証してください。
メソッドへの入力はすべて検証してください。System.Text.RegularExpressions 名前空間の正規表現メソッドは、電子メール アドレスなどの入力が正しい書式であることを確認するのに便利です。
例外情報は表示しないでください。例外情報を表示すると、潜在的な攻撃者に貴重な手掛かりを与えることになります。
最小限のアクセス許可で実行しているときに、アプリケーションが正常に動作することを確認してください。管理者としてログインすることをユーザーに要求するアプリケーションはほとんどありません。
独自の暗号化アルゴリズムは使用しないでください。System.Security.Cryptography クラスを使用してください。
アセンブリには、厳密な名前を付けてください。
XML またはその他の構成ファイルに重要な情報を格納しないようにします。
ネイティブ コードをラップするマネージ コードは、慎重にチェックしてください。ネイティブ コードが安全であることを確認してください。
アプリケーションの外部から渡されたデリゲートを使用する場合は、注意して使用します。
Visual Studio のコード解析ツールをアセンブリに対して実行し、Microsoft .NET Framework の設計ガイドラインに準拠していることを確認してください。このツールは、200 種類を越えるコードの問題を検出して警告を出力することもできます。詳細については、「マネージ コード障害の検出と修正」を参照してください。
その他のセキュリティ リソース
次に示す Microsoft のインターネット Web サイトでは、セキュリティで保護された信頼できるソフトウェアの作成について、詳細な情報を提供しています。