要点
- アクセス制御の不備は、最も多く、最も被害の大きい問題。
- シークレット、設定、依存関係にもコードと同じ注意が必要。
- インシデントを調査できるよう、セキュリティイベントを記録する。
- リリース前と大きな変更の後にセキュリティをレビューする。
業務ソフトウェアの侵害の多くは、特殊な攻撃ではなく、ありふれた穴から生まれます。Web・モバイルシステムを構築・運用するチームのための、実践的なアプリケーションセキュリティチェックリストです。
まずアクセス制御
ユーザーが本来届くべきでないデータや操作に届いてしまう、アクセス制御の不備は、業務アプリケーションで最も多い深刻な欠陥です。すべてのリクエストでサーバー側で権限を確認し、データを組織とロールで絞り込み、ユーザーがしてはならないことという否定側のケースもテストしましょう。
認証とセッション
可能ならシングルサインオンを導入し、アカウントを一元管理して退職時に確実に削除できるようにします。
- 多要素認証を提供し、管理者には必須にする。
- パスワードは最新のハッシュアルゴリズムで保存する。
- ログアウトやパスワード変更時にセッションを失効させ、トークンを無効化する。
- ログインとパスワード再設定のエンドポイントにレート制限をかける。
入力処理とデータ保護
入口で入力を検証し、パラメータ化クエリを使い、出力をエンコードしてインジェクションやクロスサイトスクリプティングを防ぎます。データは通信中も保存時も暗号化し、業務に本当に必要なものだけを収集しましょう。持っていないデータは漏れません。
設定、シークレット、依存関係
多くのインシデントは、メインのコードの欠陥ではなく、忘れられたテスト用エンドポイント、公開されたストレージ、古いライブラリから始まります。
- シークレットはコードではなく管理されたシークレットストアに置く。
- 安全なHTTPヘッダーを設定し、使わない機能を無効にする。
- 依存関係を自動でスキャンし、速やかにパッチを当てる。
- クラウドの権限を各サービスに必要な最小限に絞る。
ログ、監視、レビュー
ログイン、権限変更、エクスポート、管理操作など、セキュリティに関わるイベントを記録し、異常なパターンにアラートを出します。大きなリリースの前と重要なアーキテクチャ変更の後には、OWASP Top 10を基準にセキュリティをレビューしましょう。
参考になりましたか?次の記事をメールで受け取れます。

