Closed Jyophie closed 2 months ago
쿠키와 세션은 HTTP 프로토콜의 비연결지향과 stateless 특징으로 인해 서버 클라이언트간 통신 종료 시, 사라지 상태 데이터를 저장해두기 위해 사용한다.
HTTP의 일종으로 서버에서 사용자의 컴퓨터(로컬 aka 클라이언트)에 저장하는 기록 정보 파일이다.
클라이언트의 상태 데이터를 쿠키로 클라이언트에 저장해두었다가 필요 시 정보를 참조할 수 있다.
일정 시간 동안 같은 사용자로부터 들어오는 일련의 요청을 하나의 상태로 보고, 그 상태를 유지시키는 기술. 브라우저가 종료되기 전까지 클라이언트의 요청을 유지하게 하는
쿠키 (Cookies) 쿠키는 클라이언트 측에 저장되는 작은 데이터 조각으로, 주로 웹 브라우저를 통해 관리됩니다.
동작 방식
특징 크기 제한: 각 쿠키는 대략 4KB의 데이터만을 저장할 수 있습니다. 보안성: 쿠키는 클라이언트 측에 저장되므로, 조작이 가능하거나 보안에 취약할 수 있습니다. 따라서 중요한 정보는 쿠키에 저장해서는 안 됩니다. 만료 기간: 쿠키는 만료 날짜가 설정되어 있으며, 이 기간이 지나면 자동으로 삭제됩니다.
세션 (Sessions) 세션은 사용자의 상태 정보를 서버 측에 저장하는 방식입니다. 세션 ID는 클라이언트(대개는 쿠키를 통해)에 저장되며, 이 ID를 통해 서버는 세션 데이터베이스나 파일에서 해당 사용자의 세션 정보를 조회합니다.
동작 방식 세션 시작: 사용자가 웹 사이트를 방문하면, 서버는 그 사용자를 위한 세션을 시작합니다. 이때 서버는 세션을 식별할 수 있는 고유한 코드, 즉 '세션 ID'를 생성합니다. 세션 ID 저장: 생성된 세션 ID는 사용자의 컴퓨터에 쿠키 형태로 저장됩니다. 이 쿠키는 사이트를 이용하는 동안 계속 서버로 전송되어 사용자를 식별하는 역할을 합니다. 서버에서 세션 관리: 사용자의 로그인 정보, 장바구니 항목 등 사용자와 관련된 데이터는 서버의 세션 저장소에 저장됩니다. 서버는 세션 ID를 통해 이 데이터에 접근하고 사용자가 요청할 때마다 필요한 데이터를 제공합니다. 세션 ID 사용: 사용자가 웹 사이트에 요청을 보낼 때마다, 그의 브라우저는 세션 ID를 포함한 쿠키를 서버에 함께 보냅니다. 서버는 이 세션 ID를 확인하여 해당 사용자의 데이터를 조회하고 적절한 응답을 합니다. 세션 만료: 사용자가 로그아웃하거나 정해진 시간 동안 활동이 없으면 세션은 종료됩니다. 세션 종료 시, 서버에 저장된 관련 데이터는 삭제됩니다.
특징 보안성: 세션 데이터는 서버에 저장되기 때문에, 쿠키보다 보안이 강화됩니다. 사용자는 세션 ID만을 가지고 있으며, 이 ID로 서버에서 데이터를 참조합니다. 저장 공간: 서버 측에 저장되므로, 저장 공간의 제한이 쿠키보다 덜합니다. 더 큰 데이터와 복잡한 데이터 구조를 저장할 수 있습니다. 생명주기: 세션은 사용자가 브라우저를 닫거나 일정 시간 동안 활동이 없을 때 종료될 수 있습니다. 서버 설정에 따라 세션 타임아웃이 관리됩니다.
쿠키, 세션을 왜 쓰나요?
HTTP는 항상 연결되어있는 것이 아닌 필요할 때마다 요청을 보내고 응답을 받는 비연결성이라는 특징을 가지고 있다.
이는 클라이언트가 응답을 받으면 서버는 접속을 끊는다는 것인데, 연결이 끝나면 상태 정보가 유지되지 않는 특성이 있다.
⇒ 로그인을 한 뒤, 다른 도메인으로 이동했다 기존 사이트로 돌아오면 로그인 정보가 유지되지 않는다는 것
이렇게 유지되지 않는 로그인 정보를 유지하기 위한 방법이 쿠키와 세션이다.
쿠키가 뭔가요?
HTTP의 일종으로 사용자가 어떠한 웹 사이트를 방문할 경우, 그 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이다.
HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가 필요시 정보를 참조하거나 재사용할 수 있다.
쿠키의 특징
쿠키의 동작 순서
사용 예시
쿠키의 약점
⇒ document.cookie 를 통해 쿠키 스토리지에 저장된 사용자 권한이 있는 쿠키에 접근 可
세션이 뭔가요?
HTTP 세션이란 클라이이언트가 웹서버에 연결된 순간부터 웹 브라우저를 닫아 서버와의 HTTP 통신을 끝낼 때 까지의 기간 이다.
하지만 보통 세션이라고 말할 때에는 서버에 세션에 대한 정보(세션 상태, 클라이언트 상태, 세션 데이터 등)를 저장해 놓고 세션 쿠키( 고유한 세션 ID 값 )를 클라이언트에게 주어 서버가 클라이언트를 식별할 수 있도록 하는 방식자체를 의미하는 경우 가 많다.
세션의 특징
세션의 동작 순서
쿠키와 세션의 차이?
저장 위치
쿠키: 클라이언트에 파일로 저장되어 있다
세션: 서버에 저장되어 있다
보안
쿠키: 클라이언트의 브라우저 로컬에 저장되기 때문에 변질되거나 HTTP request 요청 시에 이를 갈취당할 수 있어서 보안에 취약하다
세션: 쿠키를 이용해서 세션id만 저장하고 그것으로 구분해서 서버에서 처리하기 때문에 비교적으로 안전하다
라이프 사이클
쿠키: 만료시간은 있지만 파일로 저장되기 때문에 브라우저를 종료해도 계속해서 정보가 남아있다. 만료기간에 따라 상대적으로 넉넉하게 쿠키를 삭제할 때까지 유지된다
세션: 만료기간을 정할 수는 있지만 브라우저가 종료되면 그에 상관없이 삭제된다
속도
쿠키: 쿠키에 정보가 있기 때문에 서버에 요청시 속도가 빠르다
세션: 정보가 서버에 있기 때문에 처리가 요구되어 비교적으로 느리다
HTTP는 상태를 가지고 있지 않습니다. 서버는 클라이언트로부터 요청을 받으면 누구로부터 왔는지 알 수 없습니다. 사용자의 정보를 저장하고 구분하기 위해 사용하는 것이 쿠키와 세션입니다.
📎 질문
[12] 쿠키와 세션의 차이에 대해 설명해주세요.
✏ 구술 답변 키워드
가장 큰 차이점은 사용자의 정보가 저장되는 위치의 차이 : 쿠키는 서버 자원 미사용, 세션은 서버 자원 사용
쿠키
세션
✏ 서술 답변
✔️ 쿠키와 세션을 사용하는 이유
HTTP 프로토콜의 특징이자 약점을 보완하기 위해 사용
✔️ HTTP 프로토콜의 특징
즉, 서버와 클라이언트가 통신을 할 때 통신이 연속적으로 이어지지 않고 한 번 통신이 되면 끊어지기 때문에 서버는 클라이언트가 누구인지 계속 인증을 해줘야 한다. 이러한 점이 매우 귀찮고 번거롭기 때문에 이를 해결하기 위해 쿠키와 세션이 존재한다.
✔️ 쿠키
HTTP의 일종으로 사용자가 어떤 웹사이트를 방문할 경우, 그 사이트가 사용하는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일. HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장했다가 필요시 정보를 참조하거나 재사용할 수 있음.
특징
동작 과정
사용 예시
✔️ 세션
일정 시간 동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술. 일정 시간은 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점부터 웹 브라우저를 종료하여 연결을 끝내는 시점을 의미. 즉, 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고, 그것을 세션이라고 한다.
특징
동작 과정
사용 예시
✔️ 쿠키와 세션의 차이점
가장 큰 차이점은 사용자의 정보가 저장되는 위치의 차이이며, 라이프사이클의 차이점이 중요함.
쿠키
세션