[기술면접] 쿠키, 세션의 개념과 차이

ayboori·2023년 8월 24일
0

CS Study

목록 보기
7/22
post-custom-banner

쿠키

인터넷 사용자의 클라이언트(로컬)에 저장되는 특정 웹 사이트에 대한 접속 정보를 저장하고 있는 작은 파일. 예를 들어 인터넷 접속 시 매번 아이디와 비밀번호를 입력하지 않아도 자동으로 입력되는 것이다.

  • 동작 방식
    클라이언트가 서버에 요청을 보낸 뒤, 서버는 set-cookie 옵션을 통해 쿠키를 포함한 응답을 보낸다. 클라이언트는 해당 쿠키를 쿠키 저장소에 저장한다. 다음 요청 시 서버에 요청을 보낼 때 클라이언트는 쿠키 저장소에서 쿠키를 꺼내 http 요청에 담아 전송한다.

세션

서버 측에서 저장하고 관리한다. 하나의 브라우저 당 한 개의 세션 객체가 생성된다. 즉, 같은 브라우저 내에서 요청되는 페이지들은 같은 객체를 공유한다. 클라이언트와 서버의 연결 상태를 유지하는 데에 사용된다.

  • 동작 방식
    서버는 클라이언트의 요청이 왔을 때 클라이언트의 정보를 담은 세션을 생성한다. 이후 세션 ID를 담은 쿠키를 클라이언트에게 보내고, 클라이언트는 쿠키 저장소에 저장한다.
    다음 요청 시 클라이언트는 세션 ID를 서버에 보내고, 서버는 HTTP 요청의 쿠키를 읽어 쿠키 안의 세션 ID를 이용해 클라이언트를 식별한다.

쿠키와 세션의 차이

  • 쿠키는 클라이언트에 저장되지만, 세션은 서버에 저장된다.
  • 세션은 서버에 저장되므로 서버의 자원을 사용한다.
  • 반면 쿠키는 클라이언트에 저장되므로 서버의 자원을 사용하지 않는다는 이점이 있다.
  • 서버에 요청을 보내는 사용자가 많을 경우 세션은 부하가 심할 수 있다.
  • 보안면에서 세션이 더 우수하다. 쿠키는 정보를 직접 저장하고 요청을 보낼 수 있다. 만약 쿠키에 사용자의 주민번호 같은 민감한 정보를 그대로 담아 HTTP 요청을 보낸다고 하자. 이때 중간에 정보를 스니핑 당할 수도 있다.
  • 세션은 쿠키를 이용해 쿠키에 세션 ID만 저장하고 서버에서 세션을 처리하기 때문에 비교적 보안성이 좋다.
  • 쿠키는 만료시간 동안 파일로 저장되므로 브라우저를 종료해도 정보가 남아있다.
  • 세션은 브라우저가 종료되면 만료시간에 상관없이 삭제된다.

요약 답변

쿠키는 클라이언트에 저장되어 특정 웹 사이트에 대한 접속 정보를 저장합니다. 세션은 클라이언트와 서버의 연결 상태를 유지하는 데에 사용됩니다. 하나의 브라우저 당 한 개의 세션 객체가 생성되어, 같은 브라우저 내에서 요청되는 페이지들은 같은 객체를 공유한다.

쿠키는 클라이언트에 저장되고, 세션은 서버 측에서 저장하고 관리한다는 차이가 있습니다. 따라서 쿠키는 서버의 자원을 사용하지 않고, 세션은 요청이 많을 시 서버에 부하가 심합니다. 그러나 쿠키는 정보를 직접 저장하고 요청을 보낼 수 있기 때문에 보안 면에서는 세션이 더 우수합니다. 만료 시간의 차이로는 쿠키는 지정한 만료 시간동안 저장되므로 브라우저를 종료해도 정보가 남아있지만, 세션은 브라우저 종료 시 만료시간에 상관없이 삭제된다는 차이가 있습니다.

추가 피드백

쿠키를 지워도 브라우저에 로그가 남기 때문에 보안에 취약할 수 있다.
1) redis (인메모리) 사용 시 블랙리스트 처리가 되어 토큰을 만료시켜 다시는 사용할 수 없도록 하는 방식으로 로그아웃을 실행한다.
2) web-security-config의 SecurityFilterChain 내에 HttpCSRF 설정 시 해당 공격을 막도록 설정할 수 있다. (CSRF : 해커의 요청대로 사용자가 요청을 보내도록 하는 공격)

본인 코드에서 쿠키 / 세션 중 어디에 담았고, 왜 그 방식을 채택했는지 답변할 줄 알아야 한다.

profile
프로 개발자가 되기 위해 뚜벅뚜벅.. 뚜벅초
post-custom-banner

0개의 댓글