프론트엔드 개발

쿠키와 세션 차이점 본문

Browser/Browser

쿠키와 세션 차이점

태나미 2021. 3. 14. 00:05

 

왜 쿠키와 세션을 쓰게 된 걸까?


client와 server는 항상 연결되어 있는 상태가 아니라 요청(request)과 응답(response)의 반복으로 데이터를 주고받는다. 서버는 사용자를 기억하지 못하는데,
이는 HTTP가 다음과 같은 특성을 따르기 때문이다.
- connectless(request -> response -> 연결 종료)
- stateless(no connect -> no memory)

이를 해결하기 위해 쿠키와 세션을 사용하게 되었다.

쿠키(cookie)

  • 클라이언트 측 로컬 브라우저에 저장되는 Key-Value쌍의 작은 데이터
  • 이후 클라이언트가 데이터를 요청 시, header에 쿠키를 넣어 서버에 보내게 되고, 서버가 쿠키를 읽어 사용자 식별.
  • 로그인 정보가 쿠키에 담겨 있다면, 더 이상의 인증은 필요 없게 된다.
  • 쿠키의 유효기간은 서버에서 설정하여 보낼 수 있다. 유효기간이 지나면 쿠키는 자동으로 소멸된다. 만약 유효기간을 설정하지 않는다면 웹 브라우저를 종료하는 순간 사라진다.

 

쿠키는 로컬 브라우저에 저장되므로 쿠키 위변조 등 보안에 취약하기 때문에, 민감한 정보는 서버 측에서 클라이언트를 식별하는 ‘세션’을 주로 이용한다.

세션(session)

  • 브라우저가 종료되기 전까지 클라이언트의 요청을 유지.
  • 쿠키를 기반하고 있지만, 사용자 정보 파일을 서버에서 관리.
  • 세션의 내용은 서버에 저장되기 때문에 사용자가 많아질수록 서버 메모리를 많이 차지함.
  • client마다 session ID를 쿠키로 저장(메모리 쿠키) 

즉 쿠키와 동일하지만, 유출되어도 역으로 확인할 수 없는 정보를 담고 있어야 한다. 이를 위해서 쿠키를 활용하게 되는데, 서버에서 고유 세션 id를 클라이언트에게 보내게 되면 이를 클라이언트는 웹 브라우저에 저장하게 된다. 그리고 그다음부터 인증을 위해서는 클라이언트의 쿠키에 저장되어있는 고유 세션 id를 서버 측에 보내게 된다.

 

쿠키와 세션의 차이점

저장 위치
쿠키는 로컬에, 세션은 로컬과 서버에 저장된다.

보안
쿠키는 탈취와 변조가 가능하지만, 세션은 ID값만 가지고 있고 서버에도 저장이 되어있기 때문에 상대적으로 안전하다.

Lifecycle
쿠키는 브라우저를 종료해도 파일로 남아있지만, 세션은 브라우저 종료 시 세션을 삭제한다.

속도
쿠키는 파일에서 읽기 때문에 상대적으로 빠르고, 세션은 요청마다 서버에서 처리를 해야 하기 때문에 비교적 느리다.

 

 

쿠키와 세션을 이용한 로그인 과정

 

출처: velog.io/@ghenmaru/%EC%BF%A0%ED%82%A4cookievs%EC%84%B8%EC%85%98session

velog.io/@junhok82/%EB%A1%9C%EA%B7%B8%EC%9D%B8%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9D%B4%EB%A3%A8%EC%96%B4%EC%A7%88%EA%B9%8CCookie-Session

chrisjune-13837.medium.com/web-%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98%EC%9D%B4%EB%9E%80-aa6bcb327582

'Browser > Browser' 카테고리의 다른 글

브라우저 쿠키 처음 사용한다면?  (0) 2021.06.15
Rendering pipeline stage costs  (0) 2021.03.28
how to browsers work, 브라우저 동작원리  (0) 2021.03.26
브라우저 네트워크  (0) 2021.02.10
Comments