쿠키와 세션이 생기게 된 계기는 http 통신 방식의 특성 때문입니다.
http 통신 방식은 두가지의 큰 특징이 있습니다.
이런 특성 때문에 쿠키와 세션이 필요합니다.
예를 들면,
- 로그인 요청을 보내고 로그인이 완료 되었습니다.
- 물건을 내 장바구니에 담고 싶어서 장바구니에 대한 요청을 보냅니다.
- 서버는 해당 사용자의 장바구니에 담아야 되기 때문에 사용자가 우리 회원인지 알아야 됩니다.(하지만, 무연결성 특성으로 인해 로그인 했던 통신이 연결되어 있지도 않고, 무상태성 특성으로 인해 로그인 했던 상태를 기억하고 있지도 않습니다)
- 그럼 다시 로그인 하면서 장바구니에 담는 요청까지 같이 해야 됩니다.
이런 상황이 오면, 매번 로그인을 해야 되고, 서버가 계속 일을 해야 됩니다.
이렇게 기억이 필요한 부분들은 쿠키를 발급해서 사용자 컴퓨터의 브라우저에 저장하고, 기억하게 합니다.
서버가 발급해주면 사용자의 컴퓨터 브라우저에 저장합니다.
또, 쿠키는 사용자가 가지고 있기 때문에 조작 및 변경이 가능합니다.
그리고 사용자의 컴퓨터에 있는 브라우저에 저장이 되기 때문에 탈취 당할 경우 보안상 위험합니다.
그래서 쿠키에는 로그인 전 장바구니에 담는 정보, 오늘 하루 동안 보지 않기 등등의 보안이 필요 없는 정보들을 담습니다.
서버에 정보를 저장하고 그 세션 ID를 쿠키에 담아 사용자에게 건내줍니다.
정보를 서버에 저장하고 있기 때문에 보안에 위협이 없습니다.
로그인 정보 와 같은 중요한 정보들을 담고 있습니다.
세션은 정보를 서버에 저장하기 때문에, 사용자가 많아질 경우 서버에 과부하가 걸릴 수 있습니다. 그렇기 때문에 탈취당해도 큰 문제가 없는 정보들은 쿠키에 넣고 관리하는 것이 서버의 과부하를 예방 할 수 있습니다.