본문 바로가기
Computer Science/HTTP Sepcification

[HTTP] 세션?? 쿠키??

by Dev. Pluto 2022. 4. 13.
반응형

안녕하세요! 플루토입니다. 오늘은 웹 + 모바일 전반에 쓰이는 Cookie에 대해서 알아보고

다음 시간에는 조금 더 세부적인 서명된 쿠키, 서명된 URL에 대해서 알아보는 시간을 가지도록 하겠습니다. 

 

 


 

이 글을 읽고난 뒤 여러분은

1. 쿠키와 세션에 대해 설명할 수 있고, 둘의 차이에 대해 이해할 수 있습니다
2. 서명된 쿠키, 서명된 URL방식에 대해 이해하고, 차이를 설명할 수 있습니다.
3. 위에서의 요소들이 실제 인터넷에서 어떻게 사용되는지 이해할 수 있습니다. 

 

 

1. Cookie? Session?

 

쿠키와 세션은 컴퓨터를 전공하지 않았더라도 인터넷을 사용하면서 한번쯤 들어봤을 법한 이름입니다. 

 

웹이나 모바일 통신을 사용할 때 Client <-> Server 간의 통신간 유지하려는 정보를 저장하기 위해서 사용하는 일종의 임시 저장소입니다.

예를 들어, 우리가 특정 웹사이트에 회원가입을 했을 때 로그인 정보를 저장하여 다음번 방문 시에 ID, Password를 자동으로 불러와서 로그인 버튼만 누르면 쉽게 로그인을 할 수 있는 등의 User의 편의성과 Server의 무상태성(Stateless)을 보장해주기 위해 사용하는 요소입니다.

 

  1-1. Cookie

 

사용자가 로그인 정보를 담아 서버에게 요청을 보내면, 서버는 해당 정보를 받아 로그인 처리를 하고 응답 http header에 Set-Cookie 필드에 정보를 담도록 응답 메시지를 보냅니다. 

 

그렇게 되면 브라우저는 별도의 저장소에 쿠키를 보관하게 되고 다음 로그인 시 해당 쿠키의 정보를 불러들여와 서버에 전송하게 됩니다. 

이때 사용자는 최초 1회에 정보만 기입하면 다음부터는 쿠키 저장소에서 정보를 불러오므로 비밀번호 등을 잊어버려도 로그인을 할 수 있게 됩니다. 

 

쿠키는 브라우저 쪽에서 저장되어 유지를 하고, 만료 날짜를 입력하면 해당 날짜까지 쿠키의 유효성을 유지하는 영속 쿠키

만료 날짜를 생략하면 브라우저 종료 시까지만 유지하는 세션 쿠키 의 두 분류로 나누게 됩니다.

 

 1-2. 세션

 

세션과 쿠키의 큰 차이점 중 하나는 쿠키가 브라우저 쪽에 저장되는 데이터인 반면, 세션은 서버 쪽에서 저장되는 정보인 것이 쿠키와 세션의 큰 차이점 중 하나입니다. 

 

사전적 의미로 세션은

유저(Client)와 서버의 연결이 생성되고 끊어지기 까지의 기간을 말하는 Session

 

 

특정한 기간을 말하고 있는데, 이는 유저와 서버가 Network를 통해 서로 연결이 되고 해당 연결이 끊어지기까지의 통신하는 모든 행위를 말하고 있습니다. 

여기서 Session ID는 특정 시점에 맺어진 세션에 대한 고유 식별자입니다. 

 

세션은 특정 유저의 요청을 서버 내에서 무작위 난수로 발생시킨 Sesstion ID를 부여함으로써, 특정 사용자를 식별하려는 의미를 가지고 있습니다. ("홍길동"이라는 사용자가 브라우저를 통해 A사이트에 로그인을 하면, Sesstion ID 2번을 부여하고 ID 2번은 홍길동이다!라고 서버 쪽에서 식별할 수 있도록 유지하는 데이터라고 생각하면 좋습니다.)

 

쿠키에서는 만료 시간을 지정하여 쿠키의 유효성을 판단하지만, 세션은 서버 측에서 timeOut 시간제한을 걸게 되어(일반적으로는 30분 ~ 1 시간) 해당 시간 동안 웹 상에서 동작이 없으면 세션을 만료시켜버리는 등의 방법으로 사용자를 식별하고 보안을 유지하고 있습니다. 

은행이나 정부기관 홈페이지 같은 사이트를 방문하면 별다른 행동을 하지 않으면 자동 로그아웃이 되는 경험을 해본 적이 있으실 겁니다. 

해당 동작이 세션이 만료됐을 때 홈페이지에서 안내 메시지를 보낸 것이라 생각하시면 됩니다. 

 

세션과 쿠키 모두 key, value 쌍을 가지는 데이터인 점에서는 두 요소가 비슷한 점을 가지고 있습니다. 

 

 

반응형