본문 바로가기
Road to Developer/깊게파고들기

[웹] 쿠키와 세션

by 구월에작은섬 2018. 6. 28.

쿠키와 세션에 대해 알아보자.


1. 왜 사용하는가?


HTTP 프로토콜의 특징인 Connectionless, Stateless에 대해 알 필요가 있다.


Connectionless : 클라이언트가 서버에 요청을 하고 서버가 클라이언트에 응답을 보내면 접속을 끊는다. 

Stateless : 통신이 끝나면 현재 state 정보를 유지하지 않는다.


클라이언트의 정보를 유지하기 싫어하는 HTTP 프로토콜을 사용하면서 서버가 클라이언트를 식별하기 위한 방법으로 쿠키와 세션을 사용하게 되었다.



2. 쿠키(Cookie)


쿠키는 일정시간 동안 데이터를 저장할 수 있어서 로그인 상태를 유지하거나 사용자 정보를 일정시간 유지하는 경우에 사용된다. 

(웹사이트에서 일정시간 경과 시 로그아웃 시키는 경우를 생각하면 될 것같다.) 


쿠키에 저장되는 정보 : 클라이언트에 저장되는 키, 이름, 값, 만료날짜, 경로정보 등.


쿠키 작동 프로세스 :  웹페이지 접속 → 쿠키를 클라이언트(내 저장소)에 저장 → 클라이언트 재 요청시 쿠키값 전송 → 지속적으로 로그인정보를 갖고있는것 처럼 사용.


쿠키를 사용하면 내 저장소에 정보가 남으므로 보안상의 위험이 있다.



3. 세션(Session)


세션은 클라이언트와 웹 서버간 네트워크 연결이 지속적으로 유지되는 상태. 서버 메모리에 저장되는 정보이다. 클라이언트와 클라이언트를 구별하기 위해 사용한다. 쿠키와 달리 정보가 누출되지 않는다. 


세션 작동 프로세스 : 클라이언트가 접속요청 → 서버가 클라이언트에 고유한 세션ID발급 → ID값을 클라이언트에 쿠키로 저장 → 다시 접속할 때 쿠키값(JSESSIONID)을 서버로 전송



4. 쿠키와 세션, 뭐가 다른가?


  • 저장되는 위치가 다르다. 쿠키 = 클라이언트, 세션=서버
  • 속도가 다르다. 쿠키>세션. 서버에 저장된 정보는 반응이 더 느리기 때문.
  • 보안문제. 쿠키는 클라이언트에서 변질되거나 정보를 탈취당할 위험이 있다. 서버는 비교적 안전.
  • 라이프사이클(만료시간). 쿠키는 클라이언트에 파일로 저장되어 브라우저가 종료되어도 정보가 남아있다. 만료시간을 지정할 수 있어서 쿠키 삭제하기 전까지 유지할 수도 있다. 세션도 만료시간을 정할 수 있지만 브라우저 종료시 삭제된다.


5. (번외)캐시와 다른점


캐시는 이미지나 css, js파일 등이 사용자의 브라우저에 저장이 된다. 따라서 다시 자료를 요청할 때 자원을 아낄 수 있다.

한번 캐시가 저장되면 브라우저를 참고하기 때문에 서버에서 값이 변경되어도 사용자는 변경된 값을 읽을 수 없을 수가 있는데 이때는 캐시를 지워주거나 서버에서 클라이언트로 응답을 보낼 때 header에 캐시 만료기간을 명시하여 해결을 한다.



반응형