쿠키(Cookie)란?
- 클라이언트(로컬)에 저장되는 키와 값이 들어있는 작은 데이터 파일이다.
- 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다.
- 클라이언트의 상태 정보를 로컬에 저장했다가 참조한다.
- 하나의 도메인 당 20개의 쿠키를 가질 수 있다.
- 하나의 쿠키는 4KB(=4096byte)까지 저장 가능하다.
쿠키의 구성요소
- 이름 : 각각의 쿠키를 구별하는 데 사용(Name)
- 값 : 쿠키의 이름과 관련 된 값(Value)
- 만료일: 쿠키가 언제 삭제되는지 결정(Expires)
- 도메인: 쿠키가 사용하는 도메인 지정(Domain)
- 경로 : 쿠키가 반환할 경로를 결정(path)
- 보안 연결: 보안 연결 설정(Secure)
- HttpOnly: HTTP외에 다른 통신 사용 가능 설정
쿠키의 동작 순서
- 사용자가 웹 사이트에 접근한다.
- 웹 서버는 사용자의 요청을 받고 사용자의 정보를 담은 쿠키를 생성한다.
- 생성한 쿠키를 HTTP 헤더에 쿠키를 포함하여 응답을 보낸다.
- 넘겨받은 쿠키는 사용자가 가지고 있다가(로컬 pc에 저장) 다시 서버에 요청할 때 요청과 함께 쿠키를 전송한다.
- 동일 사이트 재방문시 사용자의 pc에 해당 쿠키가 있는 경우엔 요청 페이지와 함께 쿠키를 전송한다.
활용 예시
- 쇼핑몰 장바구니 기능
- 방문했던 사이트 재방문시 아이디,비밀번호 자동 입력, 자동 로그인
- 팝업창을 통해 "오늘 이 창을 다시 보지 않기" 등
세션(Session)이란?
- 쿠키를 기반으로 하고 있지만 사용자 정보 파일은 브라우저에서 관리하지 않고 세션은 서버 측에서 관리한다.
- 서버에서는 사용자를 구분하기 위해 세션 ID를 부여하며 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때 까지 인증상태를 유지한다.
- 접속 시간에 제한을 두어 일정 시간 응답이 없다면 정보가 유지되지 않도록 설정이 가능하다.
- 저장 데이터에 제한이 없다.(서버 용량이 허용하는 한에서)
- 브라우저를 닫거나 서버에서 세션을 삭제했을 때만 삭제가 된다.
세션의 동작 방식
- 사용자가 서버에 접속 시 session-id를 발급 받는다.
- 사용자는 session-id에 대해 쿠키를 사용해서 저장하고 가지고 있다.
- 사용자는 서버에 요청 시 이 쿠키의 session-id를 같이 서버에 전달한다.
- 서버는 session-id를 전달 받아서 session-id에 있는 사용자 정보를 가지고 와 사용한다.
- 사용자의 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응답한다.
활용 예시
- 로그인 유지
- 화면을 이동해도 로그인이 풀리지 않고 로그아웃 전까지 유지
쿠키와 세션의 차이
쿠키 세션 데이터 저장 위치 사용자 pc의 메모리 or 파일 웹서버 저장형식 text object 만료 기간 쿠키 저장 시 설정(브라우저가 종료 되어도, 만료 시점이 지나지 않으면 자동 삭제 되지 않는다.) 브라우저 종료시 삭제(기간 지정 가능) 보안 세션보다 위험함(사용자의 로컬에 저장되고, 파일로 저장되는 경우 탈취,변조 될 위험이 있다. 쿠키보다 좋다.(쿠키를 이용해서 session-id만 저장하고 그것으로 구분하여 서버에서 처리하기 때문에 비교적 보안성이 높다..) 속도 세션보다 빠르다. 쿠키보다 느림 용량 총 300개 서버가 허용하는 한 용량 제한 없다.
🙇 참고 사이트 🙇
https://code-lab1.tistory.com/298 https://velog.io/@sorzzzzy/Code.presso-%EC%BF%A0%ED%82%A4%EC%99%80-%EC%84%B8%EC%85%98%EA%B0%9C%EB%85%90%EA%B3%BC-%ED%99%9C%EC%9A%A9-%EC%98%88%EC%8B%9C%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90 https://interconnection.tistory.com/74 https://btcd.tistory.com/40