본문 바로가기
CS

POST 요청을 보낼 때 Authorization을 헤더에 넣는 이유

by 갈잃자 2024. 2. 13.

개요: 한국보험대리점협회(IAA)에서 상품검색에 대한 api 요청을 작성 중, 의문이 드는 작업이 있었다.

기존에 다른 웹 프로젝트도 똑같이 적용됬던 사항인데. 왜 Authorization은 header에 넣어서 요청을 보내는지 확인하고자 한다


그 전에 POST 방식의 특징과 개념을 조금 살피자면

  • POST는 리소스를 생셩/변경하기 위해 설계되었으므로 전송할 데이터를 HTTP 메세지의 body에 담아 전송한다.
  • body는 길이의 제한이 없어서 POST 요청은 대욜량 데이터를 전송할 수 있다.
  • POST 요청은 캐시되지 않는다.
  • POST 요청은 브라우저 히스토리에 남지 않는다.
  • POST 요청을 보낼 땐 헤더의 Content-Type에 데이터 타입을 표시해야 한다. (ex: application/json)

 

# 이제 본문 제목에 맞춰 POST 요청을 보낼 때 Authorization을 헤더에 넣는 이유를 알아보면

 

1. 표준화된 방법

- HTTP헤더에 Authorization을 포함하는 것은 널리 인정되고 사용되는 방법중 하나이다. 이는 다양한 클라이언트 및 서버 환경에서 호환성을 보장하고, 특정 플랫폼이나 라이브러리에 종속되지 않도록 한다. (정형화 된 틀로 인해서, 플랫폼이나 라이브러리가 변화함에 따라 변경될 우려사항을 없애는 RESTful API 디자인의 일관성 이라고 보면 된다.) 

 

2. 보안성

- Authorization은 그 어플리케이션에 접근하여 여러 데이터를 사용하는데 있어 인증 받을 수 있는 방법중 하나이다. 이를 헤더에 넣지 않고, params나 body같이 보이는 데이터로 넣게 된다면 요청을 가로채는 중간자가 요청 내용을 쉽게 확인할 수 있게된다.

 

-헤더는 중간자가 요청 내용을 쉽게 확인할 수 없는이유는?

    - 헤더는 HTTP 요청의 일부이지만, 주요한 데이터 페이로드와는 별도로 취급된다. 헤더에 포함되는 데이터는 요청 및 응답의 메타데이           터로만 처리되므로 공격자가 데이터를 쉽게 확인할 수 없게끔 한다.

 

3. stateless 특성

 

- RESTful API는 클라이언트와 서버간의 통신이 상태를 유지하지 않는 stateless 특성을 가지고 있다. 이는 각 요청마다 모든 필요한 정보를 포함해야 한다는 뜻인데, header에 주요정보(ex: Authorization)을 넣게되면, body나 params를 더 깔끔하게 해서 요청 api에 가시성을 좋게할 수 있다.

 

 

 

 

 

 

요약하면, 목적을 명확히 하고, 보안상의 위험을 최소화 하며, RESTfulAPI의 일관성을 유지하기 위함입니다.

댓글