본문 바로가기

WEB/WEB

쿠키와 세션

반응형

1. 쿠키와 세션을 사용하는 이유 


쿠키와 세션은 HTTP 특징( 비연결성,비상태성 )을 해결하기 위해, 즉 클라이언트 인증을 유지하기 위해 사용한다.


2. 쿠키란


쿠키는 서버가 클라이언트의 웹 브라우저에 저장하는 데이터이다.


3. 쿠키의 특징


- 쿠키에는 사용자 인증이 유효한 시간을 명시할 수 있으며, 한 번 유효 시간이 정해지면 브라우저


를 끄더라도 인증이 유지된다는 특징이 있다.


- 쿠키의 데이터 형태는 Key 와 Value로 구성되고 String으로만 이루어져 있다. 


- 4KB 이상 저장할 수는 없다.


- 브라우저마다 저장되는 쿠키는 다르다.(크롬으로 남긴 쿠키는 인터넷 익스플로어에서 사용할 수 없다.)


서버에서는 브라우저가 다르면 다른 사용자로 인식한다.


4. 쿠키의 용도

- ID ,패스워드 저장

- 로그인 상태 유지 세션과 함께

- 7일간 다시 보지 않기. (쿠키에 체크한 날짜를 기록하여 다시 방문 했을 때의 시간과 시차를 이용하여 계산)

- 최근 검색한 상품들을 광고에서 추천

- 쇼핑몰 장바구니 기능

5. 쿠키의 종류

- Session 쿠키 ( 웹 브라우저가 종료될 때 제거되는 쿠키를 말한다. )

Permanent 쿠키( 브라우저가 종료되더라도 쿠키를 유지할 수 있다. ) 

6. 쿠키의 구성 요소

    • 이름(각각의 쿠키를 구별하는 데 사용되는 이름)
    • 값(쿠키가 갖고 있는 값)
    • 유효시간(쿠키의 유지시간)
    • 도메인(쿠키를 전송할 도메인)
    • 경로(쿠키를 전송할 요청 경로)
7.  쿠키 동작 방식

    • 클라이언트가 페이지를 요청
    • 서버에서 쿠키를 생성
    • HTTP 헤더에 쿠키를 포함 시켜 응답
    • 브라우저가 종료되어도 쿠키 만료 기간이 있다면 클라이언트에서 보관하고 있음
    • 클라이언트가 모든 요청을 할 경우 쿠키가 존재하면, HTTP 헤더에 모든 쿠키를 함께 보내서 요청
    • 서버에서 쿠키를 읽어 이전 상태 정보를 변경 할 필요가 있을 경우, 쿠키를 업데이트 하여 변경된 쿠키를 HTTP 헤더에 포함시켜 응답



8. 세션이란


세션은 쿠키를 기반으로 하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션


은 서버 측에서 관리한다. 서버에서는 클라이언트를 구분하기 위해 고유 세션 ID를 부여하며 웹 브


라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증상태를 유지한다.


물론 접속 시간에 제한을 두어 일정 시간 응답이 없다면 세션을 끊도록 설정이 가능 하다.


사용자에 대한 정보를 서버에 저장하기 때문에 쿠키보다 보안에 좋지만, 사용자가 많아질수록 서


 메모리를 많이 차지하게 된다. 즉, 동접자 수가 많은 웹 사이트인 경우 서버에 과부하를 주게 되


므로 성능 저하의 요인이 된다.



9. 세션의 동작 방식


- 클라이언트가 서버에 접속 시 세션 고유 ID를 발급


- 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장 ( 이 때 쿠키 이름은 JSESSIONID이다. )


- 클라이언트가 서버에 다시 접속 시 이 쿠키를 이용해서 세션 ID 값을 서버에 전달


세션 ID로 클라이언트를 구분해서 클라이언트의 요구에 맞는 서비스를 제공


10. 세션의 특징


- 세션 아이디는 브라우저 단위로 저장되고 브라우저 종료시 소멸됩니다.


- 로그인한 사용자에 대해서만 세션을 생성하는 것이 아니다. 따라서 로그아웃하면 새로운 사용자로 인식해서 새로운 세션이 생성된다.


-사용자가 로그인 했는지, 닉네임 등의 사용자가 요청 할 때 마다 필요한 정보들을 세션에 담아두면 사용자 디비에 접근할 필요가 없어서 효율적


11. 세션의 사용 예


로그인과 같이 보안상 중요한 작업을 수행할 때 사용



12. 쿠키와 세션의 차이점


쿠키와 세션은 비슷한 역할을 하며, 동작원리도 비슷하다.


그 이유는 세션도 결국 쿠키를 사용하기 때문이다.


가장 큰 차이점은 사용자의 기록 정보가 저장되는 위치이다.


때문에 쿠키는 서버의 자원을 사용하지 않으며, 세션은 서버의 자원을 사용한다.


또한 보안 면에서 세션이 더 우수하며, 요청 속도 쿠키가 세션보다 더 빠른데, 그 이유는 세션의 


경우 서버에서의 처리가 필요하기 때문이다.



13. 쿠키와 세션의 공통점


사용자의 정보(데이터)를 저장할 때 이용된다.


14. 쿠키와 세션의 관계도


     - 기본적인 로그인 인증 방식


1. 클라이언트가 처음 서버에 요청

2. 서버는 클라이언트의 세션 고유 아이디(JSESSIONID)를 발급

3. 서버는 고유 아이디를 쿠키(JSESSIONID)를 사용해 클라이언트에게 저장

4. 사용자가 로그인(아이디,비밀번호)을 한다.(쿠키도(JSESSIONID) 헤더에 실어 보냄)

5. 서버에서는 사용자 계정 정보(아이디,비밀번호)를 확인 후 사용자 데이터를 DB에서 불러온다

6. 서버는 세션 아이디(JSESSIONID쿠키의 값)에 매치되는 세션 저장소에 사용자 데이터를 저장

7. 클라이언트에게 사용자 정보 응답

8. 사용자는 다른 페이지를 요청( JSESSIONID 쿠키를 헤더에 실어 보냄)

9. 서버에서는 쿠키(JSESSIONID)를 받아 세션 저장소에서 대조후 대응되는 사용자 정보를 가져옴

10. 서버는 클라이언트에게 이를 응답




- 자동 로그인 방식


1. 사용자가 자동 로그인을 체크하여 로그인 한다.

2. 서버에서는 사용자 계정 정보(아이디,비밀번호)를 확인한 후

3. 별도 테이블에 사용자의 아이디, token, series 를 쌍으로 저장한다.

4. 세션 ID(JSESSIONID)발급후 사용자의 데이터를 세션저장소에 저장한다.

5. 서버에서는 로그인 쿠키(remember-me)도 클라이언트에게 발행해준다. 

6. 서버는 세션(JSESSIONID)으로부터 사용자에게 데이터를 응답한다.

7. 브라우저를 종료한다.

8. 다시 접속해 요청을 하며 로그인 쿠키(remember-me)를 헤더에 실어 보낸다.

9. 서버는 세션 ID(JSESSIONID)를 새로 발급한다.

10. 서버에서는 쿠키(remember-me)를 받아 DB와 대조한후 대응되는 사용자의 데이터를 세션(JSESSIONID)저장소에 다시 저장한다.

11. 서버는 세션(JSESSIONID)으로부터 사용자에게 데이터를 다시 응답한다.


https://lazymankook.tistory.com/35

https://isme2n.github.io/devlog/2017/06/13/security-remember-me/

https://tansfil.tistory.com/58

https://velopert.com/2350

https://victorydntmd.tistory.com/34

https://victorydntmd.tistory.com/115

https://cjh5414.github.io/cookie-and-session/

https://minwan1.github.io/2017/08/06/2017-08-06-spring-remember-me/


반응형

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

서버사이드렌더링 & 클라이언트사이드렌더링  (0) 2020.04.22
인증과 권한부여(인가)  (0) 2019.12.10
웹개발의 기본적인것들  (0) 2019.12.10
HTML이란?  (0) 2019.09.25
Html 과 web 이란  (0) 2019.05.12