본문
쿠키(Cookie)와 세션(Session)
# 쿠키(Cookie)와 세션(Session)
웹페이지 접속을 하기 위해 사용되는 HTTP 프로토콜은 상태유지 기능을 갖고 있지 않다.
때문에 새로 페이지를 요청할 때마다 사용자의 정보를 기억하는 등의 데이터 유지는 쿠키나 세션을 이용해야한다.
# 쿠키(Cookie)
- 특징
(1) 클라이언트에 저장
(2) 서버가 주체가 되어 필요한 정보를 지정
(3) HTTP요청마다 메시지에 같이 실어 서버로 전달
- 장점
(1) 서버의 저장공간 절약
- 단점
(1) 보안 취약 : 요청 시 쿠키 값을 그대로 보냄
(2) 작은 허용 용량 : 사이트 당 20개, 모두 합쳐 300개가 최대, 각 쿠키는 4KByte를 넘을 수 없음
(3) 웹브라우저마다 지원 형태가 다름
(4) 웹브라우저를 변경할 경우 다른 웹브라우저에서 저장한 쿠기값을 사용할 수 없음
(5) 사용자가 보안상의 문제로 거부할 경우 사용 불가능
(6) 네트워크 부하 : 쿠키의 크기가 클 경우 네트워크 부하가 커짐
(7) 한번에 하나의 정보만 저장할 수 있음
# 세션(Session)
- 특징
(1) 서버가 보관
(2) 고유한 SessionID 생성 후 클라이언트가 보낸 SessionID를 참조하여 정보 추출
(3) HTTP 요청마다 메시지에 SessionID만을 포함시켜서 보냄
- 장점
(1) 어느정도 보안유지 : 최초 접속 때를 제외하고 SessionID만 사용
(2) 큰 허용 용량 : 저장 개수나 용량 제한 없음(서버 용량이 충분하다면)
(3) 서버에 저장되므로 클라이언트의 웹브라우저에 의존하지 않아도 됨
(4) 데이터를 Hash Table에 저장 : 한번에 많은 정보를 하나의 세션 객체에 저장가능
(5) SessionID만 보내므로, 세션의 크기가 커도 네트워크 부하가 거의 없음
- 단점
(1) 서버에 부하 : 서버에 데이터를 저장하므로 양이 많아질수록 서버에 부하가 커짐
결론적으로 쿠키보다 세션을 쓰는 것이 더 안정적이고 안전하다.
쿠키와 세션은 모두 서블릿 API로 제공된다. 그래서 일반적으로는 세션을 사용하는 것이 좋지만,
웹 서버 세션 정보 관할 공간이 부족할 경우, 다른 프로그램과 연동해야할 경우
또는 플랫폼과 웹서버가 다를경우에는 쿠키가 유용하게 사용된다.
p.s. 세션만 사용할 경우 웹브라우저 창을 닫았다 열면 JSESSIONID값이 유지되지 않는데
이때, 쿠키를 사용하여 JSESSIONID 값을 유지시켜주면, 창을 닫아도 세션정보를 계속 이용할 수 있다.
댓글