컴퓨터 네트워크

Authorization

승무_ 2023. 7. 12. 12:00

쿠키와 세션의 차이점을 설명해 주세요 ⭐

HTTP의 비연결성, 무상태 특징 때문에 클라이언트를 식별하기 위해 나온 개념이라는 공통점이 있지만, 크게 3가지의 차이점이 있습니다.

 

가장 큰 차이 점은 사용자의 정보가 저장되는 위치 입니다. 쿠키는 사용자 정보를 로컬에 두는 반면 세션은 이를 서버에서 관리합니다. 또 보안적인 측면에서 봤을때도 쿠키는 클라이언트 로컬에 저장되기 때문에 변질되거나 request에서 스니핑 당할 우려가 있어서 보안에 취약하지만 세션은 쿠키를 이용해서 sessionId 만 저장하고 그것으로 구분해서 서버에서 처리하기 때문에 비교적 보안성이 좋습니다. 그리고 라이프 사이클에도 차이가 있는데, 둘 다 만료시간의 개념이 있지만 쿠키 같은경우, 파일로 로컬에 저장되기 때문에 만료가 되어도 정보가 계속 남아 있다는 특징이 있고, 세션 같은 경우 만료 시간이 있지만 그 전에 브라우저가 종료되면 만료시간에 상관없이 삭제된다는 차이가 있습니다.


[꼬꼬무1] 세션이 보안도 좋은데 쿠키를 사용하는 이유는 뭔가요?

세션은 서버의 자원을 사용하기 때문에 과도하게 사용할 경우 서버 메모리가 부족해져 성능저하가 발생할 수 있으므로 쿠키가 유리한 경우가 있습니다.


[꼬꼬무2] 쿠키의 사용 예를 아는대로 말씀해 주세요

쇼핑 카트 유지: 쇼핑 웹 사이트에서 쿠키는 사용자가 선택한 상품을 장바구니에 유지합니다. 이를 통해 사용자가 상품을 추가하고 탐색하는 동안 장바구니에 담긴 상품을 유지할 수 있습니다.


쿠키와 세션을 이용한 로그인 방식을 화이트보드에 설명해 주세요

쿠키를 이용한 로그인

세션을 이용한 로그인

  • 세션 방식의 로그인 과정에 대해 설명해 주세요.
더보기

1. 홈페이지 id, password 입력 필드에 값을 넣고 로그인 요청을 합니다.

2. 서버는 데이터베이스를 통해 유효한 사용자인지 검증하고 세션을 생성합니다

3. 클라이언트는 쿠키를 통해 세션 식별자인 세션 id를 받고 request때 마다 세션 id를 보내 인증을 유지합니다.

  • Stateless의 의미를 살펴보면, 세션은 적절하지 않은 인증 방법 아닌가요?
더보기

stateless가 무상태를 의미하기 때문에 상태를 유지하는 세션방식은 이에 반합니다.

그러나 로그인을 필요로 하는 사이트에서 매 요청때마다 로그인을 진행하는것이 보안이나 비용면에서 더 안좋기 때문에 세션방식을 사용하는 것 같습니다.

  • 규모가 커져 서버가 여러 개가 된다면, 세션을 어떻게 관리할 수 있을까요?
더보기

스케일 아웃된 서버 모두가 세션 정보를 공유해야 되므로 Session만을 저장하는 Session Storage를 별도로 만들어 모든 서버에서 해당 Storage를 바라보게 하는 방법이 있습니다.