과도한 데이터 노출

C# 과도한 데이터 노출

설명

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까지 반환합니다.
  • 변경 후: 이 기능에 필요하고 호출자에게 허용된 필드만 반환합니다. 정부 식별자, 결제 데이터, 내부 메모 등도 필요성과 권한을 확인해 포함 여부를 결정합니다.

참조