인터넷 서칭을 하다보면 "웹 브라우저 상에 저장되는 작은 데이터 조각"으로 정의 되어있다.
나는 이러한 내용이 잘 와닿지 않아서, 나만의 방식으로 재정리 해보았다.
쿠키는 클라이언트와 서버 간의 상태를 유지하고 정보를 교환하는데 주로 사용된다.
이는 간단하게 말해서, 서버에서 쿠키를 발급하여 클라이언트에서 주게되면, 클라이언트에서 이를 관리하게 된다. 그런데 이는 앞서 말한 토큰과 비슷하다고 느껴질 수도 있는데, 비슷한 것이 맞다.
근데, 관리및 보안 측면에서 차이가 나타난다.
이러한 차이가 있기 때문에, 쿠키는 단독으로 사용되기 보다는 세션과 함께 사용된다.
쿠키만으로는 Stateless 한 상태를 띄게 된다.
즉, 상태에 대한 유지가 불가하다는 의미이다. 이를 세션을 가용함으로써, 상태를 유지하고 더 다양한 기능을 수행 할 수 있게 된다.
Cookie도 토큰과 마찬가지도 유의미한 데이터가 들어갈 수 없다. 그렇기에 session id 와 같이 탈취 당해도 괜찮은 데이터를 담는 방식으로 함께 사용된다.
세션은 클라이언트와 서버 간의 상태를 유지하고 관리하는 기술이다.
사용자가 로그인한 후 로그아웃할 때까지 또한 브라우저를 종료할 때까지의 기간 동안 세션을 유지한다. 그렇기에 주로 로그인 상태 유지, 사용자 설정, 장바구니 등의 정보를 관리할 때 사용된다.
세션 데이터는 서버 메모리, 데이터베이스, 파일 시스템 등에 저장될 수 있으며, 클라이언트는 session id를 사용하여 해당 세션과 연관된 데이터에 접근할 수 있다.
세션은 안전한 프로토콜 즉 'HTTPS'를 사용하여 통신하도록 구성되어야 하며, 쿠키를 통해 session id를 전달하여 보다 보안성 있고 편리하게 유저를 식별할 수 있게 한다.