説明
APIの応答に、その機能に不要な機密情報や、呼び出し元に取得権限のない機密情報を含めると、過剰なデータ公開につながります。パスワードハッシュ、APIキー、アクセストークン、秘密鍵、住民登録番号やSSN、クレジットカード、銀行口座、医療情報などが対象になり得ます。
想定される影響
- 応答を受け取ったユーザーや、中継するログシステムを通じて機密情報が漏えいするおそれがあります。
- ほかの脆弱性と組み合わさると、アカウントの乗っ取り、決済情報の漏えい、プライバシーの侵害につながる可能性があります。
対処方法
エンティティ全体を直接返さず、応答用DTOで、その機能に必要かつ呼び出し元に取得権限のあるフィールドだけを返します。パスワードハッシュや秘密鍵などの秘密情報は、通常のクライアント向け応答から除外します。トークン、決済情報、内部メモなども、その機能に不要な場合や取得権限がない場合は返しません。
例
変更前
csharp
return Ok(new
{
username = "alice",
password = "hashed_password",
ssn = "123-45-6789"
});
変更後
csharp
return Ok(new
{
username = "alice",
email = "alice@example.com"
});
説明:
- 変更前: この応答には、クライアントに不要なパスワードハッシュとSSNが含まれています。
- 変更後: この機能に必要で、呼び出し元に取得権限のあるフィールドだけを返します。公的な識別番号、決済データ、内部メモなども、用途とアクセス権限に照らして必要な場合に限り含めます。