CS 면접 준비

[백엔드 면접 질문] CS - Web, Network 면접 질문 정리(1)

민돌v 2022. 8. 7. 22:58

웹, 네트워크 관련 백엔드 면접 질문-답변 정리(1)

 

쿠키 vs 세션

  • 쿠키란
    • 쿠키는 클라이언트의 로컬에 Key-Value쌍이 String 형태로 저장되는 데이터 파일입니다. 브라우저가 종료된 후에도 상태가 유지됩니다. 클라이언트의 상태 정보(이름, 값, 만료 날짜 및 시간, 경로정보)를 포함하고 있습니다.
  • 세션이란
    • 세션은 일정 시간 같은 클라이언트로부터 들어오는 일련의 요청을 하나의 상태로 보고, 그 상태를 유지하는 기술입니다. 브라우저가 종료되기 전까지 상태가 유지됩니다. 상태 유지 수단으로 쿠키를 사용하지만, 사용자 정보를 클라이언트 로컬이 아닌 서버측에서 관리합니다.

 

쿠키와 세션의 필요성

  • HTTP 프로토콜의 경우 “Connectionless, Stateless”한 특성이 있어 요청간에 의존관계가 없습니다. 또한 매 통신마다 새로 연결해야 하기 때문에 현재의 클라이언트가 이전 접속자와 같은지를 알 수 있는 방법이 없습니다. 이 점을 보완하는 데 쿠키와 세션이 사용됩니다.
  •  동작방식
    • 쿠키 동작방식
      1. 클라이언트가 페이지를 요청합니다.
      2. 서버에서 쿠키를 생성하고 HTTP 헤더에 쿠키를 포함 시켜 응답합니다.
      3. 브라우저가 종료되어도 쿠키 만료 기간이 있다면 클라이언트에서 보관하고 있습니다.
      4. 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냅니다.
      5. 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 때, 쿠키를 업데이트 하여 변경된 쿠키를 HTTP 헤더에 포함시켜 응답합니다.
    • 세션 동작방식
      1. 클라이언트가 서버에 접속 시 세션 ID를 발급 받습니다.
      2. 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장하고 가지고 있습니다.
      3. 클라이언트는 서버에 요청할 때, 이 쿠키의 세션 ID를 같이 서버에 전달해서 요청합니다.
      4. 서버는 세션 ID를 전달받아서 별다른 작업없이 세션 ID로 세션에 있는 클라이언트 정보를 가져와서 사용합니다.
      5. 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응답합니다.

 

쿠키와 세션은 언제 사용하나요?

  • 쿠키
    • 클라이언트 로컬에 저장되므로 보안에 취약해 로그인같은 인증에는 잘 쓰이지 않습니다.
    • 단순한 아이디의 저장이나, 쇼핑몰의 장바구니 담아두기 같은 기능에 사용합니다.
  • 세션: 보안상 중요한 작업인 로그인 기능에 사용됩니다.

 


세션기반 인증방식과 토큰기반 인증방식의 차이 (Token 기반 vs Session 기반)

두방식의 가장 큰 차이점은, 세션은 데이터베이스 서버에 저장된단는 점,
토큰은 클라이언트 측에서 저장한다는 점입니다.

 

세션기반 인증방식과 토큰기반 인증방식은 무엇인가요

세션기반인증방식은, 클라이언트에게 세션 ID를 발급해, 세션 정보를 서버에 저장하여 사용자를 검증하는 방식입니다.

토큰기반방식은, 따로 정보를 DB에 저장하지 않고 인증된 사용자에게 토큰을 발급하여, 서버에 요청시 토큰을 함께보내고, 이 토큰이 유효하지 확인하여 검증하는 방식입니다.

토큰기반방식은 사용자정보를 서버에 저장하지않고, 클라이언트의 요청에따라서 응답만하는 stateless한 구조를 가집니다.