쿠키(Cookie)와 세션(Session)
1. 쿠키
서버가 사용자의 웹브라우저에 저장하는 데이터를 말한다.
ex) 로그인, 비로그인 쇼핑몰 장바구니, 최근 검색 결과 바탕 제품 추천, ID저장, 자동 로그인
- 형식 : Key: Value
- 사이즈 : 쿠키당 최대 4KB , 300개 까지 만들수있다.
Session Cookie
세션 쿠키는 웹 브라우저가 종료될때 제거된다.
Permanent Cookie
브라우저 종류 여부와 상관없이 만료날짜 또는 쿠키 유지기간을 지정한다.
(이때 기간또는 날짜를 지정하지 않으면 Session Cookie로 간주하여 브라우저 종료시 제거된다.)
[ 쿠키를 이용한 로그인 프로세스 ]
1. 사용자 -(ID,PWD 입력하여 로그인 요청)-> 서버
2. 서버 -(ID, PWD 검증후 유효한 사용자일 경우 쿠키 생성) , 이때 쿠키에는 인증정보 (ex. 세션 식별자) 포함됨
3. 서버 -(생성된 쿠키 HTTP 응답 헤더에 포함 시켜 전송)-> 클라이언트
4. 클라이언트 - (받은 쿠키 웹 브라우저에 저장)
5. 클라이언트 - (서버에 요청 보낼때마다 저장된 쿠키를 요청 헤더에 포함 시켜 전송)-> 서버
6. 서버 - (클라이언트로부터 전송된 쿠키 확인하여 사용자 인증 상태 식별)
7. 로그아웃 또는 세션 만료시 서버는 쿠키 무효화 or 삭제하여 로그인 상태 해제
[ 로그인 없이 사용자 식별하기 ]
로그인을 하지않고 사용자를 식별할땐 주로 클라이언트 측에서 쿠키를 활용하여 수행된다.
1. 사용자 - 클라이언트 접속
2. 서버 -고유한 쿠키 생성하여 응답헤더에 포함시킴-> 클라이언트 측에 저장
3. 클라이언트 - 응답에서 받은 쿠키를 브라우저의 쿠키 저장소에 저장
4. 클라이언트 - 서버에 요청 보낼때 요청 헤더에 쿠키 포함 시켜 전송
5. 서버 - 클라이언트로 부터 받은 요청헤더의 쿠키를 확인하여 클라이언트를 식별
2. 세션
사용자가 브라우저를 통해 웹 서버에 접속한 시점부터 종료하는 시점까지, 일련의 요청들을 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술
- 세션 아이디를 브라우저 단위로 저장하고 브라우저 종료시 소멸된다.
- 로그인 한 유저 외에도 세션을 생성한다. (로그아웃을 하면 새로운 사용자로 인식)
- 사용자 로그인 여부, 닉네임 정보들을 세션에 담아두면 불필요한 DB접근을 막을 수 있다.
- 서버에 데이터를 저장하기 때문에 사용자 개인 컴퓨터 보다 비교적 안전함
[ 세션을 이용한 로그인 프로세스 +쿠키 ]
세션을 이용한 로그인은 쿠키와 함께 사용되며 서버측에서 사용자의 인증정보와 세션 데이터를 관리하는 방법이다.
1. 사용자 -(ID, PWD 입력해 로그인 요청)-> 서버
2. 서버 -(ID, PWD 검증하고 사용자인 경우 세션을 생성)
3. 세션은 서버측에 저장되며 고유한 세션 ID를 부여받음
4. 서버 -(세션 ID 전달-쿠키사용)-> 클라이언트
5. 클라이언트 -(세션 ID를 쿠키를 통해 저장)
6. 클라이언트-(요청 보낼때마다 쿠키에 저장된 세션 ID를 요청헤더에 포함시켜 전송)->서버
7. 서버-(전송된 세션 ID를 확인하여 해당 세션에 저장된 인증 정보를 검증)
8. 로그아웃또는 세션이 만료되면 서버는 해당 세션을 무효화하거나 삭제하여 로그인 상태를 해제한다.