CS

쿠키 Cookie와 세션 Session

Rosie_dev 2022. 3. 3. 18:56

쿠키와 세션은 HTTP 프로토콜의 특징이자 약점을 보안하기 위해서 사용됩니다.

 

 

| 먼저 HTTP 프로토콜에 대해 알아보자.

HTTP는 Hyper Text Trasfer Profocol 의 약자로 웹 상에서 클라이언트와 서버 사이의 요청과 응답 정보를 주고 받을 수 있는 프로토콜입니다.

 

 

| HTTP 특징

1. 비연결성 Connectionless

 

클라이언트 요청에 대한 응답을 마치면 연결을 끊는 성질을 말합니다. 즉, 이런 비연결성은 다수 클라이언트와 연결로 인한 리소스 손실을 줄이기 위한 특징입니다.

 

서버는 클라이언트에 대한 정보를 계속 기억하고 있는 것이 아니라서 매번 새로운 연결을 위한 오버헤드가 발생합니다.

 

HTTP 1.1 버전에서 Default로 Keep-Alive 속성으로 지속 커넥션을 가능하게 합니다. 오버헤드를 줄여 일정 시간동안 클라이언트와 서버 간 패킷을 주기적으로 보내는 것을 말합니다. 그리고 반응이 없으면 접속을 끊습니다. 그러나 이 Keep-Alive 속성이 성능을 낮추는 요인이 될 수도 있습니다. 왜냐면 사용자들이 많은 경우 연결이 되어 있어 새로운 클라이언트와 연결이 안될 수 있습니다.

 

2. 무상태 Stateless

 

클라이언트의 상태를 알지 못하는, 식별하지 못하는 상태를 말합니다. 쿠키와 세션을 이용하지 않으면 로그인 정보와 클라이언트의 상태를 기억하지 못하는 상황이 발생합니다. 

 

무상태로 인해 웹 페이지가 변동했을 때 클라이언트 상태를 알지 못해 다시 로그인을 하도록 하는 등의 불편함이 발생하게 됩니다.

 

무상태가 필요한 경우도 있는데 스케일 아웃이 가능하다는 점에서 입니다. 스케일 아웃은 서버 확장으로 응답 서버를 쉽게 바꿀 수 있다는 장점이 있습니다.

 

 

| HTTP 특징 보안을 위한 쿠키 Cookie와 세션 Session

1. 쿠키 Cookie

 

클라이언트 로컬에 저장되는 키와 값 쌍의 데이터 파일입니다. 브라우저 종료 이후에도 유효 시간을 정해 쿠키 값을 지속할 수 있다는 특징이 있습니다. 

 

클라이언트의 총 300개, 하나의 도메인당 20개의 쿠키를 가질 수 있다. 하나의 쿠키는 4KB까지 저장가능합니다.

 

쿠키는 서버에서 생성하고 응답 HTTP 헤더에 자동으로 포함시켜 클라이언트에 전달하게 됩니다. 세션보다 보안도가 낮으나 세션과 달리 로컬에 저장하기 때문에 서버 자원을 소모하지 않는다는 장점이 있습니다. 

 

2. 세션 Session

 

세션은 클라이언트와 웹 서버 간의 활성화된 접속을 의미합니다. 즉, 클라이언트와 서버의 연결부터 종료 시점까지를 세션이라고 합니다.

 

HTTP 특징을 보안하기 위한 세션은 서버에 데이터를 저장하고 키값만을 클라이언트에 남깁니다. 

 

 

 

 

댓글