본문 바로가기

Dev-/WEB

쿠키와 세션

쿠키세션에 대해 정리해보는 포스팅입니다.


우선 이 둘의 존재목적은 HTTP의 약점인 Connectless(비연결성), Stateless(무상태성)을 보완하기 위함입니다.

즉, HTTP가 유지하지 못하는 상태를 유지해주기 위해서(클라이언트를 식별하기 위해서) 사용합니다.



둘의 정의를 먼저 알아보면


쿠키

: 클라이언트에 , 으로 저장되는 데이터 파일

- 이름, 값, 만료 날짜(저장 기간), 경로가 들어있음


세션

: 클라이언트 - 서버간에 네트워크 연결이 되고 있는 그 상태자체

: 클라이언트가 처음 접속했을때 서버의 엔진이 클라이언트에 부여하는 유일한 ID



둘의 프로세스는 아래와 같습니다.


쿠키

1. 서버에 요청

2. 서버는 쿠키를 만들어 응답(Response)과 함께 클라이언트에 전송

3. 클라이언트는 이후 요청시 쿠키요청(Request)과 함께 전송


(클라이언트   ---------------------->   서버)

(클라이언트   <----------(+ 쿠키)------------   서버)

(클라이언트   ----------(+ 쿠키)---------->   서버)


세션

1. 서버에 요청

2. 세션 ID 발급(JSESSIONID)

3. 서버는 쿠키JSESSIONID를 담아 응답(Response)과 함께 클라이언트에 전송(서버에 저장된 ID와 매칭을 하기 위함)

4. 클라이언트는 이후 요청시 JSESSIONID를 쿠키에 담아 요청(Request)과 함께 전송


(클라이언트   ---------------------->   서버)

(JSESSIONID를 서버에 저장)

(클라이언트   <----------(+ 쿠키 (+ JSESSIONID))------------   서버)

(클라이언트   -----------(+ 쿠키 (+ JSESSIONID))----------->   서버)



이제 둘의 차이를 알아보면,


쿠키: 파일의 형태로 클라이언트에 저장

1. 서버에 부하를 주지 않는다. (서버자원을 사용하지 않는다.)

2. 빠르다.

3. 라이프사이클파일로 저장되므로 브라우저의 종료 여부와 상관이 없다.

4. 보안에 취약하다.


세션: 서버에 저장

1. 서버에 부하를 준다.

2. 느리다.

3. 라이프사이클브라우저가 종료되면 정보가 삭제된다.

4. 보안이 좋다.

5. 클라이언트를 정확하게 식별할 수 있다.


저장 위치, 형태의 차이가 나머지 차이로 이어집니다.




위 차이에 따라 사용하는 곳이 다른데, 아래와 같습니다.


쿠키

- 로그인시 사용자 정보 저장 여부를 묻는 창

- 자동 로그인

- 일주일동안 열지 않기

- 장바구니


세션

- 로그인

- 보안과 관련된 중요한 작업




쿠키와 세션이 비슷한 원리로 작동되는데, 세션만 사용하지 않는 이유

서버의 자원을 아끼기 위해서입니다.

'Dev- > WEB' 카테고리의 다른 글

HTTP, HTTPS의 차이  (0) 2018.08.09
Web Server(웹 서버), Web Application Server(WAS)의 차이  (0) 2018.08.09
HTTP의 정의, 특징  (0) 2018.08.07
Tomcat war 파일 배포  (0) 2018.08.06
RSA 공개키 암호화 기법  (0) 2018.07.19