쿠키와 세션
쿠키와 세션
쿠키와 세션은 HTTP 환경에서 사용되는 친구들이다.
HTTP는 클라이언트가 요청을 하면 응답을 하고 연결을 끊어버리고, 상태를 유지하지 않는다.
위와 같은 특성 때문에 서버는 클라이언트가 요청을 할 때마다 그것이 누구인지를 매번 확인해야 하고,
이를 보완하기 위해 쿠키와 세션을 사용한다.
쿠키
쿠키는 클라이언트(브라우저)에 저장되는 데이터 파일이다.
key: value 형태로 데이터가 저장되며 유효 시간을 정할 수 있고 이동안은 브라우저가 종료되어도 인증이 유지된다.
최초에 클라이언트가 서버로 요청을 보내면 서버는 쿠키를 생성하여 요청에 대한 응답과 함께 전달해준다.
이후 클라이언트는 서버로 요청을 할 때 전달받았던 쿠키와 함께 요청을 전달한다.
쿠키는 클라이언트에 저장되기 때문에 서버의 저장 공간에 대한 장점이 있다.
하지만 쿠키는 조작될 수 있고 스니핑당할 수도 있기 때문에 보안이 취약하다는 단점이 있다.
세션
세션은 서버에 저장되는 데이터 파일이다.
서버는 클라이언트를 구분하기 위해 세션 ID를 통해 세션을 관리하며 브라우저가 종료될 때까지 이를 관리한다.
그렇기 때문에 쿠키와는 달리 클라이언트의 브라우저가 종료되면 세션도 만료된다.
최초에 클라이언트가 서버로 요청을 보내면 서버는 세션ID를 생성하고 클라이언트에 세션 ID에 대한 쿠키를 전달한다.
이후 클라이언트가 서버로 요청을 할 때 전달받았던 세션ID 쿠키와 함께 요청을 전달한다.
세션은 서버에 저장되기 때문에 서버의 저장 공간과 자원을 많이 차지한다는 단점이 있다.
하지만 클라이언트에 대한 정보를 서버에 저장하기 때문에 보안이 좋다는 장점이 있다.