[backend] cookie와 session

k·2024년 1월 30일
1

backend

목록 보기
2/4

인터넷 서칭을 하다보면 "웹 브라우저 상에 저장되는 작은 데이터 조각"으로 정의 되어있다.
나는 이러한 내용이 잘 와닿지 않아서, 나만의 방식으로 재정리 해보았다.

쿠키는 클라이언트와 서버 간의 상태를 유지하고 정보를 교환하는데 주로 사용된다.

이는 간단하게 말해서, 서버에서 쿠키를 발급하여 클라이언트에서 주게되면, 클라이언트에서 이를 관리하게 된다. 그런데 이는 앞서 말한 토큰과 비슷하다고 느껴질 수도 있는데, 비슷한 것이 맞다.

근데, 관리및 보안 측면에서 차이가 나타난다.

Cookie와 Token 의 관리 및 보안 측면에서의 차이

  • Cookie
    • 관리
      • 클라이언트에서 관리한다.
      • HTTP 요청시, 자동으로 헤더에 포함되서 전송된다.
    • 보안
      • Cookie의 보안강화에는 한계가 극명하다. 그렇기에 HTTPS와 Secure옵션을 함께 사용하는 것을 권장한다.
  • Token
    • 관리
      • 클라이언트 말고도 서버에서도 관리할 수 있다.
      • HTTP 요청시, 수동적으로 헤더에 포함 시켜야 한다. (프론트 개발자의 영역)
    • 보안
      • 따로 암호화를 지정해서, 높은 수준의 보안처리가 가능하다.

이러한 차이가 있기 때문에, 쿠키는 단독으로 사용되기 보다는 세션과 함께 사용된다.

쿠키만으로는 Stateless 한 상태를 띄게 된다.
즉, 상태에 대한 유지가 불가하다는 의미이다. 이를 세션을 가용함으로써, 상태를 유지하고 더 다양한 기능을 수행 할 수 있게 된다.

Cookie도 토큰과 마찬가지도 유의미한 데이터가 들어갈 수 없다. 그렇기에 session id 와 같이 탈취 당해도 괜찮은 데이터를 담는 방식으로 함께 사용된다.

🫙Session이란?

세션은 클라이언트와 서버 간의 상태를 유지하고 관리하는 기술이다.

사용자가 로그인한 후 로그아웃할 때까지 또한 브라우저를 종료할 때까지의 기간 동안 세션을 유지한다. 그렇기에 주로 로그인 상태 유지, 사용자 설정, 장바구니 등의 정보를 관리할 때 사용된다.

세션 데이터는 서버 메모리, 데이터베이스, 파일 시스템 등에 저장될 수 있으며, 클라이언트는 session id를 사용하여 해당 세션과 연관된 데이터에 접근할 수 있다.

세션은 안전한 프로토콜 즉 'HTTPS'를 사용하여 통신하도록 구성되어야 하며, 쿠키를 통해 session id를 전달하여 보다 보안성 있고 편리하게 유저를 식별할 수 있게 한다.

profile
You must do the things you think you cannot do

0개의 댓글