쿠키(cookie)와 세션(session)

Uhan33·2024년 1월 25일
0

TIL

목록 보기
17/72

기존에 쿠키와 세션에 대해 아는 것이라고는
쿠키는 클라이언트가 저장하는 정보, 세션은 서버가 저장하는 정보
라는 느낌정도로만 알고 있었다.
이번에 쿠키와 세션을 다시 접하면서 정리해보려고 한다.

쿠키(Cookie)

브라우저가 서버로부터 응답으로 Set-Cookie 헤더를 받은 경우 해당 데이터를 저장한 뒤 모든 요청에 포함하여 보낸다.

  • 쿠키는 사용자가 naver.com과 같은 웹 사이트를 방문할 때마다 이전에 방문했던 정보를 기억하는 데이터 파일이다.
  • 데이터를 여러 사이트에 공유할 수 있기 때문에 보안에 취약할 수 있다.
  • 쿠키는 userId=user-1321;userName=sparta 와 같이 문자열 형식으로 존재하며 쿠키 간에는 세미콜론(;) 으로 구분된다.

서버가 클라이언트의 HTTP 요청(Request)을 수신할 때, 서버는 응답(Response)과 함께 Set-Cookie 라는 헤더를 함께 전송할 수 있다.
그 후 쿠키는 해당 서버에 의해 만들어진 응답(Response)과 함께 Cookie HTTP 헤더안에 포함되어 전달받는다.

세션(Session)

쿠키를 기반으로 구성된 기술이다.
단, 클라이언트가 마음대로 데이터를 확인 할 수 있던 쿠키와는 다르게
세션은 데이터를 서버에만 저장한다.

  • 세션은 일반적으로 세션 Id를 쿠키를 이용해 클라이언트에게 전달하여, 서버는 이 세션 Id를 사용해 저장된 세션 데이터를 조회한다.
  • 세션을 통해 사용자의 상태 정보를 서버에 저장하면, 서버는 사용자의 상태를 추적할 수 있게 된다.
  • 보안성은 좋으나, 반대로 사용자가 많은 경우 서버에 저장해야 할 데이터가 많아져서 서버 컴퓨터가 감당하지 못하는 문제가 생기기 쉽다.
  • 쿠키와 마찬가지로 세션 역시 만료 기간이 있다.

쿠키의 경우 서버를 재시작하거나 새로고침을 하더라도 로그인이 유지된다. 이는 사용자에게는 편리하지만, 서버의 입장에서는 보안 문제가 발생할 수 있다.
쿠키가 조작되거나 노출된다면 해당 권한을 탈취당해, 악의적인 공격을 받을 수 있게 되는 것이다.

그렇다면, 쿠키에는 어떤 정보를 담아야 할까?
바로, 사용자가 누구인지 확실하게 구분할 수 있는 정보를 넣어주어야 할 것이다.
그래야 민감한 정보는 서버에서만 관리하고, 사용자 식별 정보를 통해 사용자의 정보를 반환할 수 있게 되기 때문이다.

그래서 세션에서는 예시로 들자면,
쿠키에 사용자 정보를 저장할 때 사용자 정보는 서버에 저장해 두고,
사용자를 구분할 수 있는 정보(쿠키의 시간 정보 등)를 이용하여 쿠키에 저장해둔다.

그러면 세션에 저장된 정보를 불러오려 할 때 쿠키에 들어있는 사용자의 정보를 받아서
이를 기준으로 세션에 저장된 정보를 찾아 보내주는 방식인 것이다.

마치며..

쿠키와 세션이 무엇인지, 그리고 이들의 작동 방식을 이해했다.

0개의 댓글