セキュリティ監査キット
アプリケーションのセキュリティを強化するための7ステップワークフロー
このワークフローは、Webアプリケーションまたはサーバー環境のセキュリティを監査・改善したい開発者やシステム管理者を対象としています。認証情報の衛生管理、データ保護、HTTPセキュリティヘッダーを網羅するため、手順に従って進めてください。最終的に、脆弱なパスワード、平文保存、暗号化されていないデータ、設定不備のブラウザポリシーという最も一般的な攻撃ベクターに対処できます。
強力な認証情報を生成する
脆弱なパスワードはセキュリティ侵害の主要な原因です。すべてのサービスアカウント、APIキー、管理者認証情報に対して、暗号学的に安全なランダムパスワードを生成してください。
既存のパスワードを検証する
既存のパスワードを信頼する前に、エントロピー計算と一般的なパターン検出で評価してください。エントロピーが70ビット未満のものはすべて交換すべきです。
パスワードをハッシュ化して保存する
パスワードを平文で保存してはいけません。Bcryptは自動的にソルトを追加し、意図的に処理が遅く設計されています。各ハッシュ生成はミリ秒単位ですが、総当たり攻撃のコストを非現実的なほど高くします。
完全性のためにデータをハッシュ化する
ファイルの完全性を検証したり、デプロイメントのチェックサムを作成したり、決定論的な識別子を生成したりします。SHA-256はセキュリティコンテキストにおけるチェックサムの標準です。
機密データを暗号化する
後で復元する必要があるデータ(ハッシュとは異なり)には、AES-256が業界標準です。トークン、設定値、またはアプリケーション外部に保存されるデータの暗号化に使用してください。
コンテンツセキュリティポリシーを作成する
CSPヘッダーはブラウザが読み込めるリソースを制御することでXSS攻撃を防ぎます。適切に設定されたCSPは、スクリプトインジェクションに対する最も効果的な防御手段の一つです。
CORSヘッダーを設定する
設定不備のCORSはAPIの一般的な脆弱性です。意図したオリジンのみを許可する正確なヘッダーを生成してください。認証情報を持つエンドポイントにワイルドカード(*)を使用することは重大なセキュリティ上の欠陥です。
プロのヒント
- 監査のたびに認証情報を更新してください。強力なパスワードでも、1年以上ローテーションなしで使用し続ければリスクになります。
- 本番環境ではbcryptのコストファクターを12以上に設定してください。現代のハードウェアでは、計算能力の向上に伴い、コスト10は予想より早く破られる可能性があります。
- CSPを適用する前に、まずレポートオンリーモード(Content-Security-Policy-Report-Only)でテストしてください。設定が誤っているポリシーはアプリケーション全体を壊す可能性があります。