説明
パスワード、トークン、セッション識別子、APIキーをログや標準出力にそのまま書くと、ログへのアクセスだけでアカウントやセッションの乗っ取り、内部設定の漏えいにつながるおそれがあります。本番環境ではstdoutやstderrもログ収集基盤へ転送されることがあります。
想定される影響
- ログを閲覧できる人が認証情報やセッション値を読める可能性があります。
- 機密値がSIEM、バックアップ、外部ログサービスへ複製される可能性があります。
- インシデント対応時に削除しにくい長期保存データが残る可能性があります。
対処方法
- パスワード、トークン、Authorizationヘッダーの値をログに出さないでください。
- 必要な場合は、固定のマスキング文字列、ハッシュ化した追跡ID、サーバー側の参照値だけを記録してください。
- 共通のマスキング処理やログフィルターで、機密フィールドを一元的に除去してください。
- stdoutとstderrも本番ログとして扱い、同じ方針を適用してください。
例
変更前
python
import logging
def bad_parameterized_token(token):
logging.info("token=%s", token)
変更後
python
import logging
def safe_masked_token(token):
logging.info("token=%s", "[REDACTED]")
解説:
- 変更前: トークンの値をそのままログに出しています。
- 変更後: トークンの代わりに固定のマスキング文字列を記録します。