로그인 기능에 대해 공부하다 쿠키와 세션에 대해 정리하게 되었다.
쿠키와 세션을 쓰는 이유 ❓
Http protocol
은Connectionless
하고stateless
한 특성을 가지고 있기 때문에 브라우저의 상태를 저장하고 유지하기 위해서 cookie와 session을 사용한다.
쿠키는 웹 사이트에 접속하면 생성되는 정보를 담은 작은 데이터 파일이다.
쿠키는 key-value
형태로 이루어져 있고, String으로 이루어져있다. 또한 브라우저마다 다른 값을 가진다(Chrome, IE, ...)
key -value 형태로 저장된 쿠키의 예시
(4번째 쿠키의 값은 암호화 되어있음)
쿠키는 웹 브라우저를 사용하는 컴퓨터에 저장되고, 필요시에 이를 헤더에 붙여 서버측으로 보내 사용자를 식별할 수 있게 해준다. 쿠키의 유효시간을 명시적으로 지정하지 않는다면 쿠키는 브라우저에 계속 남아있게 된다.
서버 측에 정보를 저장하는 것이 아니라 웹 브라우저에 저장하기 때문에 탈취가 쉽고, 마음대로 변경이 가능하다. 따라서 보안에 취약하다.
일정시간동안 같은 사용자에게서 오는 일련의 요청들을 하나의 상태로 보고, 이를 일정하게 유지하는 기술이다.
세션은 쿠키와 달리 서버측에 저장되고 브라우저가 종료될때까지 유지된다.
session.setAttribute("id","갱이");
session.getAttribute("id"); //갱이
session.removeAttribute("id"); //개별 삭제
session.invalidate(); //전체 세션 삭제
서버측에서 식별 과정을 처리하므로 시간,속도에 대한 cost가 비싸다.
저장 위치
: 쿠키는 클라이언트 쪽 로컬에 저장되지만 세션은 서버에 저장된다.LifeCycle 측면
: 쿠키는 브라우저를 종료해도 남아있을 수 있지만 세션은 브라우저를 종료하면 삭제된다.보안 측면
: 서버에서 관리하는 세션이 더 보안성이 우수하다.속도 측면
: 세션은 요청마다 처리과정이 필요하기 때문에 더 느리다다음에는 JWT로 돌아오겠습니다🥰