▶ 쿠키와 세션을 사용하는 이유
- HTTP의 비연결성(Connectionless)과 비상태성(Stateless)을 보완하여 서버가 클라이언트를 식별하기 위해 사용합니다.
- HTTP는 서버의 자원을 절약하기 위해 모든 사용자의 요청마다 연결과 해제의 과정을 거치기 때문에 연결 상태를 유지하지 않고(비연결성), 연결 해체 후에도 상태 정보를 저장하지 않습니다.(비상태성) → 사용자를 식별할 수 없어 매번 새로운 사용자로 인식하게 됩니다. ex) 페이지를 이동할 때마다 로그인을 다시 해야 됨.
+ 비연결성(Connectionless) : 클라이언트가 요청(request) 한 후 응답(response)을 받으면 연결을 끊는다
+ 비상태성(Stateless) : 통신이 끝나면 상태를 유지하지 않는다.
▶ 쿠키와 세션의 차이 -> 저장 위치, 보안, 속도
- 가장 큰 차이점은 정보의 저장 위치입니다. 쿠키는 클라이언트에, 세션은 서버에 저장됩니다.
- 보안면에서는 세션이 더 우수하며, 요청 속도는 쿠키가 세션보다 더 빠릅니다. 그 이유는 세션은 서버의 처리가 필요하기 때문입니다.
- 쿠키는 클라이언트 로컬에 저장되기 때문에 변질되거나 스니핑 당할 우려가 있어 보안에 취약하지만 세션은 쿠키를 이용하여 sessionid만 저장하고 그것으로 구분해서 서버에서 처리하기 때문에 비교적 보안성이 좋습니다.
- 쿠키와 세션은 비슷한 역할을 하며 동작 원리도 비슷합니다. 그 이유는 세션도 쿠키를 사용하기 때문입니다.
+ 세션을 사용하면 좋은데 왜 쿠키를 사용하는가?
-> 세션은 서버의 자원을 사용하기 때문에 사용자가 많을 경우 소모되는 자원이 상당합니다. 때문에 자원관리 차원에서 쿠키와 세션을 적절히 사용하여 서버 자원의 낭비를 방지하고 속도를 높일 수 있습니다.
▶ 쿠키(Cookie)
쿠키란
- 클라이언트(브라우저) 로컬에 저장되는 Key와 Value로 구성된 String형태의 작은 데이터 파일
- 쿠키의 구성요소 : 이름, 값, 유효시간, 도메인, 경로
- 세션 관리 : 로그인, 접속 시간, 장바구니 등 서버가 알아야 할 정보들을 저장
- 개인화 : 사용자마다 다르게 그 사람에 적절한 페이지를 보여줄 수 있다.
- 트래킹 : 사용자의 행동과 패턴을 분석하고 기록한다
쿠키 사용 예
-> 사용자 편의를 위한 것, 지워져도 되고, 가로채이더라도 큰 지장이 없는 수준의 정보
- 쇼핑몰의 장바구니 기능
- ID 저장, 자동 로그인
- 자동 완성, 팝업창 일주일간 다시 보지 않기
- 최근 검색한 상품들을 광고에서 추천
▶ 세션(Session)
세션이란
- 세션은 쿠키를 기반으로 하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리합니다.
- 각 클라이언트에게 고유 세션 ID를 부여한다.
- 보안면에서 쿠키보다 우수하다. -> 사용자에 대한 정보를 서버에 두기 때문에
- 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다
- 동접자 수가 많은 웹 사이트의 경우 서버에 과부하를 주게 되므로 성능 저하의 요인이 됩니다.
세션 사용 예
-> 사용자나 다른 누군가에게 노출되면 안 되는 중요한 정보
- 로그인 유지
- 보안상 중요한 작업을 수행할 경우
쿠키(Cookie) | 세션(Session) | |
저장위치 | 클라이언트 | 서버 |
저장형식 | text | Object |
리소스(사용하는 자원) | 클라이언트의 리소스 | 서버의 리소스 |
용량제한 | 클라이언트에 300개 쿠키 저장 가능 하나의 도메인 당 20개, 하나의 쿠키 당 4KB |
제한없음 |
만료시점 | 쿠키 저장 시 설정 (설정 없을 시에는 브라우저 종료시 만료) |
브라우저 종료 시 삭제 |
속도 | 세션보다 빠름 | 쿠키보다 느림 |
보안 | 세션보다 안좋음 | 쿠키보다 좋은 |
'cs지식 > CS' 카테고리의 다른 글
[CS] GET과 POST 비교 (0) | 2021.05.26 |
---|