QueenCards / ProjectAnalysis

플젝뿌셔
1 stars 0 forks source link

[12] 쿠키와 세션의 차이에 대해 설명해주세요. #13

Closed Jyophie closed 2 months ago

Jyophie commented 2 months ago

📎 질문

[12] 쿠키와 세션의 차이에 대해 설명해주세요.

✏ 구술 답변 키워드


✏ 서술 답변

✔️ 쿠키와 세션을 사용하는 이유

HTTP 프로토콜의 특징이자 약점을 보완하기 위해 사용

✔️ HTTP 프로토콜의 특징

  1. Connectionless 프로토콜(비연결 지향) : 클라이언트가 서버에 요청을 했을때, 그에 맞는 응답을 보낸 후 연결을 끊는 처리방식
  2. Stateless 프로토콜(무상태성) : 커넥션을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성

즉, 서버와 클라이언트가 통신을 할 때 통신이 연속적으로 이어지지 않고 한 번 통신이 되면 끊어지기 때문에 서버는 클라이언트가 누구인지 계속 인증을 해줘야 한다. 이러한 점이 매우 귀찮고 번거롭기 때문에 이를 해결하기 위해 쿠키와 세션이 존재한다.


✔️ 쿠키

HTTP의 일종으로 사용자가 어떤 웹사이트를 방문할 경우, 그 사이트가 사용하는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일. HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장했다가 필요시 정보를 참조하거나 재사용할 수 있음.

특징

동작 과정

  1. 클라이언트가 페이지를 요청한다.
  2. 웹서버는 쿠키를 생성한다.
  3. 생성한 쿠키에 정보를 담아 HTTP 화면을 돌려줄 때, 같이 클라이언트에게 돌려준다.
  4. 넘겨받은 쿠키는 클라이언트가 가지고 있다가(로컬 PC에 저장) 다시 서버에 요청할 때 요청과 함께 쿠키를 전송한다.
  5. 동일 사이트 재방문시 클라이언트의 PC에 해당 쿠키가 있는 경우, 요청 페이지와 함께 쿠키를 전송한다.

사용 예시

✔️ 세션

일정 시간 동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술. 일정 시간은 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점부터 웹 브라우저를 종료하여 연결을 끝내는 시점을 의미. 즉, 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고, 그것을 세션이라고 한다.

특징

동작 과정

  1. 클라이언트가 페이지에 요청한다.
  2. 서버는 접근한 클라이언트의 Request-header 필드인 쿠키를 확인하여, 클라이언트가 해당 Session-id를 보냈는지 확인한다.
  3. Session-id가 존재하지 않으면, 서버는 Session-id를 생성하여 클라이언트에 넘겨준다.
  4. 클라이언트는 서버로부터 받은 Session-id를 쿠키에 저장한다.
  5. 클라이언트는 서버 요청시 이 쿠키의 Session-id 값을 같이 서버에 전달한다.
  6. 서버는 전달 받은 Session-id로 세션에 있는 클라이언트 정보를 가지고 요청을 처리 후 응답한다.

사용 예시


✔️ 쿠키와 세션의 차이점

Nahyun-Kang commented 2 months ago

쿠키와 세션을 사용하는 이유(공통점)

쿠키와 세션은 HTTP 프로토콜의 비연결지향과 stateless 특징으로 인해 서버 클라이언트간 통신 종료 시, 사라지 상태 데이터를 저장해두기 위해 사용한다.

HTTP 비연결지향

HTTP Stateless 상태 정보 유지 안함

쿠키란?

HTTP의 일종으로 서버에서 사용자의 컴퓨터(로컬 aka 클라이언트)에 저장하는 기록 정보 파일이다.

클라이언트의 상태 데이터를 쿠키로 클라이언트에 저장해두었다가 필요 시 정보를 참조할 수 있다.

쿠키 특징

  1. key-value 쌍으로 구성되어 있는 데이터 파일이다.
  2. 이름, 값, 만료일, 전송할 경로, 전송할 도메인 명, 보안 연결 여부, HttpOnly여부로 구성되어있다.
  3. 클라이언트에 총 300개의 쿠키를 저장할 수 있다.
  4. 하나의 도메인 당 20개의 쿠키를 가질 수 있다.
  5. 하나의 쿠키는 4kb(=4096 byte)까지 저장 가능하다.

쿠키 동작 순서

  1. 클라이언트가 페이지에 접근
  2. 웹 서버가 쿠키를 생성하고, 응답 헤더에 set-cookie:를 통해 쿠키를 추가하여 응답
  3. 클라이언트를 쿠키를 보관하고 있다가 서버에 요청할 때 요청 헤더에 쿠키를 자동으로 추가하여 같이 전송한다.

쿠키의 사용 목적

  1. 세션 관리(로그인, 사용자 닉네임 등 서버가 알아야 할 정보들을 저장)
  2. 개인화 (사용자마다 다르게 적절한 페이지 보여주기)
  3. 트래킹(사용자 행동과 패턴을 분석하고 기록)

세션이란?

일정 시간 동안 같은 사용자로부터 들어오는 일련의 요청을 하나의 상태로 보고, 그 상태를 유지시키는 기술. 브라우저가 종료되기 전까지 클라이언트의 요청을 유지하게 하는

세션 특징

  1. 웹 서버에 웹 컨테이너 상태를 유지하기 위한 정보를 저장한다.
  2. 브라우저를 닫거나, 세션 삭제 시, 삭제된다.
  3. 서버에 갖고 있기 때문에 쿠키보다 보안이 좋다.
  4. 저장 데이터에 제한이 없다.
  5. 각 클라이언트마다 고유 Session ID를 부여한다.
  6. 세션이 서버에 저장되기 때문에 늘어날 경우 서버에 부하 증가

세션 동작 방식

  1. 클라이언트가 접속, 최초 요청 발생
  2. 서버는 클라이언트의 고유한 id를 세션 ID 로 생성하여 저장
  3. 서버가 응답시 응답 헤더에 세션 ID를 쿠키에 추가하여 응답
  4. 클라이언트는 이후, 서버에 요청할 때 전달받은 세션 ID를 쿠키에 자동으로 요청 헤더에 추가하여 요청

세션의 사용 목적

  1. 정보 보안(노출되면 안 되는 사용자의 중요 정보들을 다루기 위해 사용)
olseul commented 2 months ago

쿠키 (Cookies) 쿠키는 클라이언트 측에 저장되는 작은 데이터 조각으로, 주로 웹 브라우저를 통해 관리됩니다.

동작 방식

  1. 서버에서 쿠키 생성
  2. 클라이언트에 쿠키 저장: 브라우저는 받은 쿠키를 로컬에 저장합니다. 이 쿠키는 도메인, 경로, 만료 날짜 등의 속성을 갖습니다.
  3. 브라우저에서 쿠키 전송: 사용자가 동일한 서버에 다시 HTTP 요청을 보낼 때, 브라우저는 자동으로 해당 서버의 도메인과 경로에 일치하는 쿠키를 HTTP 요청 헤더에 포함시켜 전송합니다.
  4. 서버에서 쿠키 사용: 서버는 요청에서 받은 쿠키를 읽어 사용자의 이전 상태나 설정을 확인하고, 이에 기반하여 사용자에게 적합한 응답을 생성합니다.
  5. 쿠키 갱신 및 만료: 서버는 필요에 따라 쿠키의 값을 갱신하거나 새로운 쿠키를 설정하여 클라이언트에 전송할 수 있으며, 설정된 만료 기간에 따라 쿠키는 자동으로 삭제됩니다

특징 크기 제한: 각 쿠키는 대략 4KB의 데이터만을 저장할 수 있습니다. 보안성: 쿠키는 클라이언트 측에 저장되므로, 조작이 가능하거나 보안에 취약할 수 있습니다. 따라서 중요한 정보는 쿠키에 저장해서는 안 됩니다. 만료 기간: 쿠키는 만료 날짜가 설정되어 있으며, 이 기간이 지나면 자동으로 삭제됩니다.

스크린샷 2024-05-07 오후 3 03 44

세션 (Sessions) 세션은 사용자의 상태 정보를 서버 측에 저장하는 방식입니다. 세션 ID는 클라이언트(대개는 쿠키를 통해)에 저장되며, 이 ID를 통해 서버는 세션 데이터베이스나 파일에서 해당 사용자의 세션 정보를 조회합니다.

동작 방식 세션 시작: 사용자가 웹 사이트를 방문하면, 서버는 그 사용자를 위한 세션을 시작합니다. 이때 서버는 세션을 식별할 수 있는 고유한 코드, 즉 '세션 ID'를 생성합니다. 세션 ID 저장: 생성된 세션 ID는 사용자의 컴퓨터에 쿠키 형태로 저장됩니다. 이 쿠키는 사이트를 이용하는 동안 계속 서버로 전송되어 사용자를 식별하는 역할을 합니다. 서버에서 세션 관리: 사용자의 로그인 정보, 장바구니 항목 등 사용자와 관련된 데이터는 서버의 세션 저장소에 저장됩니다. 서버는 세션 ID를 통해 이 데이터에 접근하고 사용자가 요청할 때마다 필요한 데이터를 제공합니다. 세션 ID 사용: 사용자가 웹 사이트에 요청을 보낼 때마다, 그의 브라우저는 세션 ID를 포함한 쿠키를 서버에 함께 보냅니다. 서버는 이 세션 ID를 확인하여 해당 사용자의 데이터를 조회하고 적절한 응답을 합니다. 세션 만료: 사용자가 로그아웃하거나 정해진 시간 동안 활동이 없으면 세션은 종료됩니다. 세션 종료 시, 서버에 저장된 관련 데이터는 삭제됩니다.

특징 보안성: 세션 데이터는 서버에 저장되기 때문에, 쿠키보다 보안이 강화됩니다. 사용자는 세션 ID만을 가지고 있으며, 이 ID로 서버에서 데이터를 참조합니다. 저장 공간: 서버 측에 저장되므로, 저장 공간의 제한이 쿠키보다 덜합니다. 더 큰 데이터와 복잡한 데이터 구조를 저장할 수 있습니다. 생명주기: 세션은 사용자가 브라우저를 닫거나 일정 시간 동안 활동이 없을 때 종료될 수 있습니다. 서버 설정에 따라 세션 타임아웃이 관리됩니다.

HaydenDevK commented 2 months ago

쿠키

세션

hyeyoonS commented 2 months ago

쿠키, 세션을 왜 쓰나요?

HTTP는 항상 연결되어있는 것이 아닌 필요할 때마다 요청을 보내고 응답을 받는 비연결성이라는 특징을 가지고 있다.

이는 클라이언트가 응답을 받으면 서버는 접속을 끊는다는 것인데, 연결이 끝나면 상태 정보가 유지되지 않는 특성이 있다.

⇒ 로그인을 한 뒤, 다른 도메인으로 이동했다 기존 사이트로 돌아오면 로그인 정보가 유지되지 않는다는 것

이렇게 유지되지 않는 로그인 정보를 유지하기 위한 방법이 쿠키와 세션이다.

쿠키가 뭔가요?

HTTP의 일종으로 사용자가 어떠한 웹 사이트를 방문할 경우, 그 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이다.

HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가 필요시 정보를 참조하거나 재사용할 수 있다.

쿠키의 특징

쿠키의 동작 순서

  1. 클라이언트가 페이지를 요청한다 (사용자가 웹사이트 접근) 웹 서버는 쿠키를 생성한다
  2. 생성한 쿠키에 정보를 담아 HTTP 화면을 돌려줄 때, 같이 클라이언트에게 돌려준다
  3. 넘겨 받은 쿠키는 클라이언트가 가지고 있다가(로컬 PC에 저장) 다시 서버에 요청할 때 요청과 함께 쿠키를 전송한다
  4. 동일 사이트 재방문시 클라이언트의 PC에 해당 쿠키가 있는 경우, 요청 페이지와 함께 쿠키를 전송한다

사용 예시

  1. 방문했던 사이트에 다시 방문 하였을 때 아이디와 비밀번호 자동 입력
  2. 팝업창을 통해 "오늘 이 창을 다시 보지 않기" 체크

쿠키의 약점

  1. 쿠키의 특징으로는 클라이언트(브라우저)단에 저장된다는 것이다
  2. 즉 보안에 약할 수 있다
  3. 쿠키를 훔쳐서 계정 접근 권한 등을 탈취하여 유저의 정보를 악용할 수 있다

⇒ document.cookie 를 통해 쿠키 스토리지에 저장된 사용자 권한이 있는 쿠키에 접근 可

세션이 뭔가요?

HTTP 세션이란 클라이이언트가 웹서버에 연결된 순간부터 웹 브라우저를 닫아 서버와의 HTTP 통신을 끝낼 때 까지의 기간 이다.

하지만 보통 세션이라고 말할 때에는 서버에 세션에 대한 정보(세션 상태, 클라이언트 상태, 세션 데이터 등)를 저장해 놓고 세션 쿠키( 고유한 세션 ID 값 )를 클라이언트에게 주어 서버가 클라이언트를 식별할 수 있도록 하는 방식자체를 의미하는 경우 가 많다.

세션의 특징

세션의 동작 순서

  1. 클라이언트 페이지가 요청한다
  2. 서버가 클라이언트마다 개별의 세션 ID를 부여한다
  3. 클라이언트는 요청할 때마다 세션 ID를 서버에 전달한다
  4. 서버는 받은 세션 ID로 클라이언트 정보를 가져와 활용한다

쿠키와 세션의 차이?

  1. 저장 위치

    쿠키: 클라이언트에 파일로 저장되어 있다

    세션: 서버에 저장되어 있다

  2. 보안

    쿠키: 클라이언트의 브라우저 로컬에 저장되기 때문에 변질되거나 HTTP request 요청 시에 이를 갈취당할 수 있어서 보안에 취약하다

    세션: 쿠키를 이용해서 세션id만 저장하고 그것으로 구분해서 서버에서 처리하기 때문에 비교적으로 안전하다

  3. 라이프 사이클

    쿠키: 만료시간은 있지만 파일로 저장되기 때문에 브라우저를 종료해도 계속해서 정보가 남아있다. 만료기간에 따라 상대적으로 넉넉하게 쿠키를 삭제할 때까지 유지된다

    세션: 만료기간을 정할 수는 있지만 브라우저가 종료되면 그에 상관없이 삭제된다

  4. 속도

    쿠키: 쿠키에 정보가 있기 때문에 서버에 요청시 속도가 빠르다

    세션: 정보가 서버에 있기 때문에 처리가 요구되어 비교적으로 느리다

wise-Ag commented 2 months ago

HTTP는 상태를 가지고 있지 않습니다. 서버는 클라이언트로부터 요청을 받으면 누구로부터 왔는지 알 수 없습니다. 사용자의 정보를 저장하고 구분하기 위해 사용하는 것이 쿠키와 세션입니다.

쿠키

동작방식

  1. 클라이언트가 서버에 요청을 보냄
  2. 서버는 쿠키를 생성하여 HTTP 헤더에 포함시켜 응답
  3. 클라이언트는 response로 받은 쿠키를 저장 후 서버에 요청을 보낼때마다 자동으로 함께 보냄.
  4. 서버는 브라우저가 보낸 쿠키값으로 사용자를 구분함

특징

세션

동작방식

  1. 클라이언트가 서버에 요청을 보냄
  2. 서버는 고유의 세션ID를 생성 및 저장
  3. 서버는 세션ID를 쿠키에 넣어 HTTP 헤더에 포함시켜 응답
  4. 클라이언트는 response로 받은 쿠키를 저장 후 서버에 요청을 보낼때마다 자동으로 함께 보냄.
  5. 서버는 전달받은 세션 ID로 세션에 있는 클라언트 정보를 가져와서 사용, 응답

특징