쿠키와 세션 사용하는 이유
HTTP프로토콜의 특징이자 약점을 보완하기 위해 사용한다.
먼저 http프로토콜의 특징이자 약점을 살펴보자.
1. Connectionless. Protocol 비연결지향
클라이언트가 서버에 요청했을때, 그 요청에 맞는 응답을 보낸 후 연결을 끊는 처리방식.
2. Stateless Protocol (상태정보 유지안함)
클라이언트의 상태정보를 가지지 않는 서버처리방식.
클라이언트와 첫번째 통신에서 데이터를 주고받았다 해도, 두번째 통신에서 이전데이터를 유지하지 않는다.
BUT, 실제로는 데이터유지가 필요한 경우가 많다.
정보가 유지되지 않으면 매번 페이지 이동시 마다 로그인을 해야하거나 장바구니에서 상품을 선택했는데 구매페이지에서 상품의 정보가 사라지거나 하는 경우가 발생할 것이다.
이 때문에 Stateful 경우를 대처하기 위해서 쿠키와 세션을 사용한다.
서버와 클라이언트 통신 시 통신이 연속적으로 이어지지 않고 한번 통신 후 끊어지게 된다. 따라서 서버는 클라이언트가 누구인지 계속 인증을 해야하는데 이는 매우 귀찮고 번거로운 일이기도 하고 웹페이지의 로딩을 느리게한다.
이러한 문제점을 해결하는 방법이 쿠키와 세션이다.
즉, 클라이언트와 서버 통신시 정보를 유지하기 위해 사용하는 것이 쿠키와 세션이다.
쿠키 Cookie
http의 일종으로 웹사이트 방문시, 그 사이트가 사용하고 있는 서버에서
사용자의 클라이언트에 저장하는 기록데이터파일이다.
http에서 클라이언트의 상태정보를 클라이언트에 저장해두었다가 필요시 정보를 참조, 재사용 한다.
쿠키 특징
이름, 값, 만료일, 경로정보 로 구성됨.
클라이언트에 총 300개의 쿠키 저장 가능.
하나의 도메인당 20개의 쿠키를 가질 수 있다
하나의 쿠키는 4 kb까지 저장 가능
쿠키 동작순서
1. 클라이언트 요청 (사용자가 웹사이트 접근)
2. 웹서버는 쿠키생성
3. 생성한 쿠키에 정보를 담아 http화면을 돌려줄때 같이 클라이언트에게 넘긴다.
4. 넘겨받은 쿠키는 클라이언트가 가지고 있다가 다시 서버에 요청 시, 쿠키를 함께 전송.
5. 동일 사이트 재방문시 클라이언트 pc에 해당쿠키가 있는경우, 요청페이지와 함께 쿠키 전송.
사용 example
인터넷쇼핑장바구니, 재방문시 아이디/비번 자동입력, 오늘 이창을 다시보지않기 설정 등등 . .
세션 Session
사용자가 웹 브라우저를 통해 웹서버에 접속한 시점으로부터 웹 브라우저를 종료하여 연결을 끝내는 시점까지, 같은 사용자로부터 오는 일련의 요청을 하나의 상태로 보고, 그 상태를 일정하게 유지하는 기술.
즉, 방문자가 웹 서버에 접속해있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다.
세션 특징
웹서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장
웹서버에 저장되는 쿠키 (=세션쿠키)
브라우저를 닫거나, 서버에서 세션을 삭제했을 때 삭제되므로, 쿠키보다 보안이 좋다.
저장데이터에 제한이 없다.
각 클라이언트의 고유세션ID를 부여한다.
세션ID로 클라이언트를 구분하여 각 클라이언트 요구에 맞는 서비스를 제공한다.
세션 동작순서
1. 클라이언트 요청 (사용자가 웹사이트 접근)
2. 서버는 접근클라이언트의 Request-Header필드인 cookie를 확인하여, 클라이언트가 해당 세션ID를 보냈는지 확인
3. 세션ID가 존재하지 않는다면, 서버는 세션ID를 생성해 클라이언트에게 전송.
4. 서버에서 클라이언트로 준 세션ID를 쿠키를 사용해 서버에 저장한다.
5. 클라이언트는 재접속시, 이 쿠키를 이용하여 세션ID값을 서버에 전달한다.
사용 example
화면이동해도 로그인이 풀리지 않고 로그아웃전까지 유지.
세션을 체크하여 관리자/사용자 여부 판단 등등 ..
쿠키와 세션차이
구분 | 쿠키 Cookie | 세션 Session |
저장위치 | 클라이언트(로컬) | 서버 |
라이프사이클 (만료시점) |
쿠키 저장시 설정 (브라우저가 종료되더라도 만료시점이 지나지않으면 자동삭제되지 않음) |
브라우저 종료시 삭제 (기간 별도 지정 가능) |
보안 | 로컬에 저장되어 탈취,변조 위험 존재. 비교적 취약 | 서버에 저장되므로 안전 |
속도 | 빠름 | 제공받은 세션아이디를 이용해서 서버에서 다시 데이터를 참조해야 하므로 비교적 느림 |
Then, 어떤경우에 쿠키를 사용할까?
세션이 쿠키에 비해 보안이 높지만 쿠키를 사용하는 이유는 세션은 서버에 저장되어
서버자원을 사용하기 때문에 사용자가 많을 경우 소모되는 자원이 상당하다.
이러한 자원관리 차언에서 쿠키와 세션을 적절히 병행사용하여 서버지원의 낭비를 줄이고
웹사이트의 속도를 높일 수 있다.
'Back-end > DEV notes' 카테고리의 다른 글
크롬 메모리 부족 다운 현상 out of memory 해결법!!! 윈도우10 가상메모리 설정 (4) | 2020.11.30 |
---|---|
Tomcat 파일생성 권한 - UMASK 설정 (0) | 2020.11.18 |
톰캣 tomcat 구조 파악하기. (1) | 2019.04.28 |
Tiles 타일즈란 ? (2) | 2019.04.24 |
소스 말 때 형상관리 주용어 (0) | 2019.03.25 |