-
쿠키 & 세션CS 지식/○ Web 2021. 4. 12. 17:06
■ 쿠키
1) 정의 :
서버가 클라이언트 브라우저에 보내어 브라우저가 저장하였다가, 서버의 요청이 있을 때 참조할 수 있는 문자열 정보
> 웹페이지 방문시 방문 기록 등 브라우저에서의 정보들이 저장된 텍스트 파일
> HTTP 통신이 비연결성이기 때문 / Stateless
> '어떤' '누구' client의 요청인지 파악하기 위함
(서버를 대신하여 웹브라우저에 관련 내용을 저장,
필요할 때 꺼내어서 전송하여 사용자 식별하는 방식) = 인증 등이 필요한 작업에 대해
> key, value 형태로 저장
> 브라우저마다 저장되는 쿠키는 다름
쿠키의 생성과정 2) 종류
(a) 기술적 쿠키 : 검색하는 주체가 사람 / application 인지 이용자 구분
(b) 분석 쿠키 : 어떤 것을 주로 검색하는지, 시간, 언어 등의 정보 수집
(c) 광고 쿠키 : 검색 내용 / 언어에 따라 광고 게재
> id정보 저장(로그인 기능), 최근 검색관련 광고, 쇼핑몰 장바구니 기능, 일정기간 팝업 차단 체크 등...
3) 생성 과정
(a) 클라이언트 접속 → 서버 response시 쿠키 정보를 header의 set-cookie에 넣어 전달
(b) 클라이언트는 request시 (a)에서 받은 cookie를 header의 cookie에 넣어 전달
(c) 서버는 다시 쿠키와 함께 respond
... 이후 req / res는 header에 포함되어 전송됨
4) 옵션
- Max-age : 현재 시간 기준으로 쿠키 유지할 time 설정
- Expires : 쿠키 만료 날짜 지정
- Secure : HTTPS 프로토콜 상 암호화된 요청일 경우만 전송
- HttpOnly : Cross-stie 스크립트 공격 방지, JS의 document.cookie API 접근 불가
- Domain : 쿠키가 전송될 호스트 명시
- Path : 쿠키 header 전송을 위해 요청되는 url 경로 포함
- SamSite : 쿠키가 cross-site 요청과 함께 전송되지 않음을 요구, 위조공격에 대한 보호
5) 효과
> 쿠키로 인하여 로그인 다시 하지 않고 사용자 정보 유지(이후 session과 관련)
- 쿠키가 없다면 사용자정보를 계속해서 넘겨주어야하는 단점
- req 안에 쿠키가 포함되어있기 때문에, 받으면서 동시에 client 식별 가능
서버에서 session 사용시 로그인 지속 가능
■ 세션
1) 정의 :
쿠키가 header에 포함되는 방식 때문에, 보안이 필요한 요소가 노출될 수 있음
> 비밀번호와 같은 인증 정보를 쿠키에 저장하지 않고
JSESSIONID(Session id [※tomcat에서 발급하는 예시]) 값을 대신 저장
> 서버 side에서 세션을 통해 인증 정보를 이 JSESSIONID로 관리함
> 서버 session에서는 로그인 상태, 시간, 닉네임, 만료기한 등을 관리
2) 생성 과정
(a) 클라이언트 request → Session id 미존재
(b) .... 로그인 과정 수행(db 등!)
(c) response로 쿠키에 Session id 생성하여 전달
(d) .... 쿠키 관련 생성 절차 마무리
(e) 서버는 requset로 온 쿠키에 포함된Session id로 사용자 식별, 인증 정보 필요한 곳에 사용
3) 효과/특징
- 브라우저 단위로 저장, 브라우저 종료시 제거
- 로그아웃 시 새로운 대상으로 판단, 새로운 session 생성
- 매번 page 변경 시 db 조회 등의 절차, 재로그인 등을 할 필요 없어 사용자 경험 증대 및 서버 자원 아낄 수 있음
4) 옵션
- Secure : Https 통신을 위해 secure = true 설정
- Httponly : true로 설정하여 javascript로 session 쿠키 사용할 수 없도록 강제 설정 가능
참조:
웹브라우저 쿠키란? - 쿠키 개념, 세션 개념 (Cookie & Session)
안녕하세요! 인터넷을 사용하다 보면 쿠키 관련된 정보를 묻거나 설정하는 등 쿠키 정보에 대해 많이 사용이 됩니다. 자주 접하게 되는 쿠키(Cookie)와 세션(Session)이 무엇인지 한번 정리해보았습
lovefor-you.tistory.com
Node.js | 쿠키(cookie) 알아보기 (쿠키를 이용한 ID저장하기)
1. cookie-parser 설치 만약 express generator를 이용했다면 기본적으로 설치되어 있으니 생략 가능하다. $ npm install cookie-parser 설치한 cookie-parser를 사용하기 위한 준비 var express = require('expre..
gaemi606.tistory.com
Node.js | Session 알아보기(express-session)
1. 설치 express-session이라는 미들웨어를 설치해줍니다. express-session은 Node.js의 프레임워크인 Express를 사용할 때 세션을 관리할 수 있도록 하는 미들웨어임 $ npm install express-session 2. 사용준비..
gaemi606.tistory.com
opentutorials.org/course/3400/21837
express-session의 session 객체 - 생활코딩
수업소개 express-session의 핵심은 request 객체의 맴버인 session 객체입니다. 이 객체의 의미와 사용방법을 살펴보겠습니다. 강의 소스코드 변경사항 var express = require('express') var parseurl = require('parseu
opentutorials.org
HTTP 는 Stateless 한데 로그인은 어떻게 구현할 수 있을까? (세션/쿠키를 이용한 인증)
개요 소셜 네트워크 서비스 'AGORA'를 제작하면서 가장 먼저 개발한 기능은 회원가입/로그인 입니다. 혼자 사용하거나 모든 정보가 공개된 웹 어플리케이션이 아니라면 대부분의 웹 어플리케이
hyuntaeknote.tistory.com
반응형'CS 지식 > ○ Web' 카테고리의 다른 글
HTTP 통신 기본 & Rest API (0) 2021.04.12