Pink Spider/Access Token을 http header에 보내는 것과 body에 보내는 것의 차이

Created Fri, 12 Sep 2025 08:25:18 +0900 Modified Mon, 08 Dec 2025 08:41:47 +0900
492 Words 2 min

HTTP API 호출 시 access token을 헤더와 바디에 보내는 것 사이에는 몇 가지 중요한 보안상 차이점이 있습니다:

주요 보안 차이점

1. 로깅 및 모니터링

  • 헤더: 대부분의 웹 서버와 프록시는 기본적으로 Authorization 헤더를 로그에서 마스킹하거나 제외합니다
  • 바디: 요청 바디는 디버깅 목적으로 로그에 기록될 가능성이 높아 토큰이 평문으로 노출될 위험이 있습니다

2. 캐싱 동작

  • 헤더: HTTP 캐시는 Authorization 헤더가 있는 요청을 기본적으로 캐시하지 않습니다
  • 바디: 바디에 토큰이 있어도 캐시 정책에 따라 응답이 캐시될 수 있어, 의도치 않은 토큰 노출 위험이 있습니다

3. 프록시 및 미들웨어 처리

  • 헤더: 표준 인증 헤더로 인식되어 보안 미들웨어에서 적절히 처리됩니다
  • 바디: 일반 데이터로 취급되어 보안 처리가 누락될 수 있습니다

4. 브라우저 개발자 도구

  • 헤더: 네트워크 탭에서 볼 수는 있지만, Authorization 헤더임을 명확히 인식할 수 있습니다
  • 바디: 일반 데이터처럼 보여 개발자가 민감한 정보임을 놓칠 수 있습니다

권장사항

// ✅ 권장: Authorization 헤더 사용
fetch('/api/data', {
  headers: {
    'Authorization': 'Bearer ' + accessToken,
    'Content-Type': 'application/json'
  }
});

// ❌ 비권장: 바디에 토큰 포함
fetch('/api/data', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    accessToken: accessToken,
    otherData: data
  })
});

결론: Authorization 헤더를 사용하는 것이 보안상 더 안전하며, HTTP 표준을 준수하는 방법입니다. 대부분의 보안 도구와 인프라가 이를 전제로 설계되어 있어 더 나은 보안 보장을 제공합니다.