본문 바로가기
JAVA

쿠키와 세션의 차이!

by GoodDayDeveloper 2020. 6. 19.
반응형

쿠키와 세션의 차이!

 

안녕하세요.

오늘은 쿠키와 세션에 대해 이야기해보겠습니다.

 

쿠키와 세션이 필요한 이유는!

HTTP 프로토콜이 비연결성과 Stateless한 것의 단점을 보완하기 위해서 쿠키와 세션을 사용합니다.

 

비연결성이란

http는 요청과 응답을 주고 받을 때 지속적으로 연결 되어있지 않습니다. 즉 클라이언트가 서버로 request를 보내고 서버가 클라이언트에게 response로 응답을 주면 이후 그 둘은 서로 모르는 사이가 됩니다. 즉 서로 접속이 끊어지는 거죠!

서로 자기가 할 역할에만 충실할 뿐 서로에게 관심이 없다는 뜻이 됩니다.

 

Stateless

클라이언트와 서버의 통신이 한번 이루어지고 끝이나면 서버는 데이터를 저장하지 않는 다는 것을 의미합니다. 이는 상태가 없다는 뜻에서 stateless라고 합니다.

http 프로토콜은 요청 간 사용자 데이터를 저장하는 수단을 제공하지 않습니다.

 

그러나 상태를 저장하지 않는다고 해서 매번 클라이언트가 요청할 때마다 새로 로그인을 하는 건 너무 비효율적인 일이 될 것입니다. 그것을 해결하기 위해 쿠키와 세션이 등장했습니다.

 

 

 

 

 

 

쿠키

쿠키는 클라이언트 로컬에 저장되는 데이터 문자열입니다. 이 쿠키 데이터는 아주 작은 데이터로 파일에 저장되는데 브라우저별로 저장되는 위치가 다릅니다.

쿠키는 브라우저에 저장되는 값이기 때문에 보안에 취약하며, 하나의 도메인에서 설정한 쿠키 값이 20개를 초과하면 가장 적게 사용된 쿠키부터 지워집니다.

즉 정리하자면 쿠키는 클라이언트에서 저장되는 데이터인데, 쿠키에 로그인 정보를 저장해 놓으면 매번 request 요청시, 쿠키도 자동으로 전송되어 로그인이 끊기지 않은 것 처럼 느껴질 수가 있습니다.

 

 

세션

세션은 서버에 저장되는 데이터라고 말합니다.클라인트가 request를 보내면, 해당 서버의 엔진이 클라이언트마다 고유한 id를 부여하고 저장하는데 이 id가 세션 id입니다. 이렇게 하면, 클라이언트의 민감한 데이터를 굳이 쿠키에 저장할 필요가 없이, request, 세션id를 서버로 보내면 서버가 세션 id를 기준으로 데이터를 찾아서 읽으면 됩니다.

세션은 서버의 자원을 사용하기 때문에 미세하더라도 서버에 부하를 줄 수 있으며, 이로 인해서 속도가 느려질 수 있습니다!

 

 

세션은 서버의 자원을 사용하기 때문에 무분별하게 만들다 보면 서버의 메모리가 감당할 수 없어져서 쿠키를 사용하게 됩니다. 또한 쿠키가 속도도 빠르기 때문에 쿠키를 사용하는 이유기도 하죠.

하지만 가장 중요한 보안성이 브라우저에 저장되는 쿠키보다는 서버에 저장되는 세션이 안전하기 때무에 세션을 사용하는 가장 큰 이유가 여기에 있기도 합니다.

 

 

 

반응형

'JAVA' 카테고리의 다른 글

JSP 개념과 이해!  (0) 2020.06.23
서블릿의 개념!  (0) 2020.06.21
JSTL 날짜 포맷 변경 방법  (0) 2020.06.15
JAVA 개념 정리 2탄  (0) 2020.06.05
JAVA 개념 정리 1탄  (0) 2020.06.04

댓글