설명
비밀번호, API 키, 시크릿, 액세스 토큰 같은 민감 정보를 URL 쿼리 문자열로 받으면 브라우저 히스토리, 서버 접근 로그, 프록시, 캐시, Referer 헤더에 값이 남을 수 있습니다.
잠재적 영향
- 로그나 모니터링 시스템을 통해 계정 비밀번호와 토큰이 노출될 수 있습니다.
- Referer 헤더나 공유된 링크를 통해 제3자에게 민감값이 전달될 수 있습니다.
해결 방법
민감값은 HTTPS 요청 본문이나 인증 헤더로 전달하고, URL에는 식별자나 비민감 필터 값만 포함합니다.
예시
변경 전
csharp
[HttpGet("reset")]
public IActionResult Reset([FromQuery] string newPassword)
{
return Ok();
}
변경 후
csharp
[HttpPost("reset")]
public IActionResult Reset([FromBody] ResetPasswordRequest request)
{
return Ok();
}
설명:
- 변경 전: 비밀번호, API 키, 시크릿 또는 bearer 토큰을 URL 쿼리 파라미터에서 읽으면 브라우저 기록, 접근 로그, 프록시, 캐시 및 Referer 헤더를 통해 노출될 수 있습니다.
- 변경 후: 민감한 값은 HTTPS 요청 본문이나 헤더로 받고 URL에 비밀값을 넣지 마세요.