개인 노트 정리) 프론트엔드 개발자가 알아야 하는 CS 지식 - 웹(Web) - 쿠키(Cookie)와 세션(Session)

2023. 4. 7. 20:08개인노트-인강

프론트엔드 웹 개발의 모든 것 초격차 패키지 Online.
프론트엔드 개발자가 알아야 하는 CS 지식 Ch 01. 웹(Web) - 쿠키(Cookie)와 세션(Session)

 

# 쿠키(Cookie)와 세션(Session)

웹 브라우저와 웹 서버가 통신하는 과정에서 쿠키와 세션은 매우 유용하게 활용 됩니다.

 

## 쿠키(Cookie)

  • 쿠키 : 사용자가 틍정한 웹 사이트에 방문할 때, 사용자 컴퓨터에 저장하는 기록 파일입니다.
  • 서버의 자원을 전혀 사용하지 않습니다.
  • 사용 예시 : "아이디와 비밀번호를 저장하시겠습니까?" 
  • 위 사용 예시의 경우 예외는 있습니다. 최근에는 아이디와 패스워드를 별도의 서비스에 기록하는 경우도 있습니다. 예를 들어 우리들이 신뢰하고 사용하는 계정이 구글계정이라면, 구글 계정상에서 다른 웹 사이트에 대한 아이디와 패스워드에 대한 정보를 기록하고 있어서 크롬과 같이 구글에서 제공하는 웹 브라우저를 이용하는 경우, 그것이 자동으로 연동이 되어서 아이디와 패스워드를 자동으로 채워 넣어주는 방식으로 동작할수도 있습니다.

## 세션(Session)

  • 세션 : 한 명의 사용자(브라우저)의 상태를 유지하는 기술입니다. (물론 우리가 사용하는 HTTP 프로토콜은 상태에 대한 정보를 담고 있지 않는다는 특징이 있지만 세션은 그런 상태를 유지해 주는 기술입니다.)
  • 서버가 클라이언트에게 고유한 Session ID를 부여하면, 클라이언트는 접속할 때마다 Session ID와 함계 요청합니다.
  • 사용 예시 : 웹 사이트에 한 번 로그인 하면, 다른 페이지로 이동해도 계속 접속 상태가 유지됩니다.
  • 만약 Session ID를 다른 클라이언트에게 탈취당하면, 다른 사람이 자신의 행세를 할 수 있습니다. (그래서 회원정보확인이나 개인정보수정과 같은 페이지에 접속할 때는 별도의 아이디와 패스워드를 한 번 더 물어봐서 별도의 토큰을 발급하는 과정을 사용하기도 합니다.)

 

### 세션(Session) 개요

  • 서버에서 가지고 있는 객체로, 특정 사용자의 로그인 정보를 유지하기 위해 사용할 수 있습니다.(일반적)
  • 예를 들어 우리가 웹 사이트에 로그인한 뒤에, 서버에서는 세션 ID에 따른 회원 ID 정보를 기록합니다.
  • 클라이언트는 해당 세션을 계속 유지합니다. 예를 들어 메일함에 접속할 때도 세션 ID를 서버에 전송합니다.
  • 다시 말해 세션은 자신이 누구인지를 서버에 알려주는 역할을 수행합니다.

 

### 세션이 동작하는 과정

  • 서버에서 가지고 있는 객체로, 특정 사용자의 로그인 정보를 유지하기 위해 사용할 수 있습니다.

 

### 세션(Session) 인증 방식 예시

 

### 세션(Session) 방식의 특징

장점

  • 클라이언트에게는 세션 ID(회원 식별 목적)을 제공하고, 회원에 대한 중요한 정보를 서버가 가지고 있습니다.
  • 민감한 데이터를 클라이언트에 직접적으로 보내지 않습니다.
  • 클라이언트 브라우저가 가지고 있는 세션(Session) ID 자체에는 개인정보를 포함하고 있지 않습니다.

 

단점

  • 악의적인 공격자가 세션 ID를 탈취하여 사용자인 척 위장할 수 있습니다.
  • 웹 서버에 세션 정보를 기록하고 있어야 하므로, 접속자가 많을 때 서버에 메모리 부하가 존재할 수 있습니다.