Swiftでの機密情報の平文ログ出力

Swiftでの機密情報の平文ログ出力

説明

パスワード、トークン、セッション識別子、APIキーなどの機密情報を print、NSLog、os_log、Logger に出力すると、端末のログ、クラッシュ情報の収集基盤、運用ログへのアクセスを通じて値が漏えいするおそれがあります。

想定される影響

  • 認証トークンやセッションの窃取。
  • 個人情報や内部APIキーの漏えい。
  • ログ収集システムを通じた機密情報の拡散。

対処方法

  1. 機密情報をログに出力しないでください。
  2. 必要な場合は、固定のマスク文字列や別の追跡IDだけを記録してください。
  3. 共通のマスキング用ヘルパーやログフィルターを設け、機密フィールドを一元的に除去してください。

例

変更前

swift
func logToken(token: String) {
    NSLog("token %@", token)
}

変更後

swift
func logToken() {
    NSLog("token refreshed")
}

解説:

  • 変更前: トークンの値を直接ログに残すと、ログを読めるだけで認証情報を取得できてしまいます。
  • 変更後: イベントだけを記録し、機密情報そのものは出力しません。

参考資料