민감 정보 평문 로그 기록

민감 정보의 평문 로그 기록

설명

비밀번호, 토큰, 세션 ID, API 키, 개인정보 같은 민감한 값을 평문으로 로그에 기록하면 로그 수집기, 운영 콘솔, 파일 백업, 장애 분석 도구를 통해 값이 노출될 수 있습니다. 로그는 애플리케이션 데이터베이스보다 더 넓은 권한으로 공유되는 경우가 많아 별도 보호가 필요합니다.

잠재적 영향

  • 인증 정보와 세션 토큰 노출
  • 개인정보 침해
  • 장기 보관 로그를 통한 지속적 위험

해결 방법

  1. 민감 정보는 로그에 남기지 않습니다.
  2. 진단에 꼭 필요한 경우 비밀값 대신 고정된 마스킹 문자열이나 별도 추적 ID를 기록하세요. 단순 해시만으로 비밀값이 안전해지는 것은 아닙니다.
  3. 로그 접근 권한, 보존 기간, 전송 암호화를 함께 관리합니다.

예시

로거와 변수 선언을 생략한 발췌입니다. 변경 후의 userId도 개인정보일 수 있으므로 기록 필요성, 접근 권한과 보존 기간을 확인하세요.

변경 전

java
logger.info("password={}", password);
logger.debug("token={}", accessToken);

변경 후

java
logger.info("login attempt for userId={}", userId);
logger.debug("token present={}", accessToken != null);

설명:

  • 변경 전: 비밀번호, 토큰, 세션 식별자, API 키 같은 민감 정보를 로그 파일이나 표준 출력에 남기면 로그 접근 권한만으로도 계정 탈취나 내부 정보 노출로 이어질 수 있습니다.
  • 변경 후: 비밀번호, 토큰, 세션 식별자, Authorization 값은 로그에 남기지 않습니다.

참조