쿠키와 세션

2022. 5. 19. 10:16Web & Server/수업 내용

쿠키는 서버 측에서 클라이언트에게 보내주는 키-밸류 형식의 데이터이다.

이 데이터는 세션 관리, 개인화, 트래킹의 용도로 쓰인다.

 

http 모듈을 사용할 때,

쿠키는 응답 헤더에 심어서 전송한다.

객체의 인자로 'Set-Cookie' : '키=밸류' 값을 전달한다.

전달하고 싶은 쿠키가 2개라면 배열로 전달한다.

Session Cookie는 웹 브라우저가 종료되면 자동으로 소멸한다.

 

 

클라이언트가 자신이 가지고 있는 Session Cookie를 서버 측으로 전달했을 때,

서버는 request.header.cookie 값을 읽으면 되지만,

쿠키가 여러 개일 경우 단순 문자열로 저장되어 있다.

따라서 npm에 등록된 모듈 'cookie'의 cookie.parse를 이용하면 손쉽게 객체로 바꿀 수 있다.

 

 

Permanent Cookie는 웹 브라우저가 종료되어도 정해진 기간까지 살아남는 쿠키이다.

Max-Age는 현재 시간을 기준으로 몇 초 후에 만료될 지를 지정해준다.

 

 

Secure Cookie는 https로 통신하는 경우에만 전송되는 쿠키이다.

HttpOnly Cookie는 http로 통신하는 경우에만 전송된다.

따라서, javascript를 주입해서 쿠키의 정보를 탈취할 수 없다.

 

 

 

Path Cookie는 쿠키의 유효범위를 지정해준다.

예를 들어 /cookie 라는 경로의 밑에서만 쿠키가 유효하게 할 수 있다.

Domain Cookie는 지정된 도메인의 서브 도메인에서만 유효하다.

 

 

쿠키를 삭제하려면

Max-Age를 0으로 주고 이 쿠키를 응답 헤더에 넣어 보내면 된다.

 

 


 

http 모듈 말고, 이젠 express에서 쿠키를 사용해보자.

 

 

 

쿠키는 웹 브라우저에 저장되는 키-밸류 타입의 데이터이다.

따라서 누구나 키에 따른 밸류를 확인할 수 있으므로 비밀정보를

쿠키로 보낸다면 비밀 정보를 아주 쉽게 탈취당할 수 있다.

 

세션은 이러한 문제점을 고려해 쿠키를 업그레이드 한 것이라 볼 수 있다.

쿠키와 달리 서버에 데이터를 저장하고 웹 브라우저는 Session ID만을 가지고 있는

덕분에 비교적 안전하다.

 

세션의 동작을 요약하자면

1. 서버는 웹 브라우저에게 세션 값을 보내준다.

2. 클라이언트는 접속할 때 자신이 가지고 있는 sid를 서버에게 전달합니다.

3. 서버는 클라이언트가 보내준 sid를 가지고, 해당 유저를 식별한다.

 

세션을 설치하려면 npm install -s express-session 을 터미널에 입력해야 한다.

 

 

 

 

 

 

세션 사용 예시