[WEB] 쿠키(Cookie)와 세션(Session) QnA

sudog·2023년 9월 21일
0

WEB

목록 보기
3/9

웹에서 쿠키가 뭘 의미하는 거야?

쿠키란 서버에서 생성해 클라이언트에게 제공하는 작은 데이터를 의미합니다. 전달된 쿠키는 클라이언트의 웹 브라우저에 저장되며 HTTP 요청 헤더에 포함되어 서버로 전달됩니다.

쿠키를 왜 사용하는데?

사용자 인증을 유지하거나, 사이트 설정, 장바구니 등 클라이언트의 상태를 저장하고 서버에 전달하기 위해서입니다.

매번 데이터가 서버로 전달되면 비효율적이지 않을까?

그래서 쿠키는 4KB의 작은 크기를 가지고 있습니다. 또한 만료기간이 설정되어 있어서 브라우저가 종료되거나 일정 기간이 지나면 삭제됩니다.

보안적인 측면에서 취약한 것 같은데?

그렇습니다. 쿠키는 브라우저에 저장되고 항상 서버에 전송되기 때문에 공격에 취약합니다. 따라서 탈취, 변조될 위험성이 있으므로 쿠키에는 중요한 정보를 저장하지 않는 것이 좋습니다.

그럼 사용자 인증을 어떻게 유지하는 거야?

세션이라는 기술을 사용합니다. 세션은 쿠키의 단점을 보완하기 위해 도입된 개념으로 쿠키를 기반으로 동작하지만 쿠키와 다르게 사용자 정보를 서버에 저장합니다. 사용자의 상태가 서버에 저장되므로 쿠키에 비해 보안이 우수하고 더 많은 양의 정보를 저장할 수 있습니다.

쿠키를 기반으로 동작한다고? 쿠키와 상반되는 개념 아니었어?

아닙니다. 사용자의 정보를 사용하려면 먼저 사용자를 식별해야 합니다. 이를 위해 세션 아이디를 쿠키로 설정하여 클라이언트에 전달합니다.

세션 아이디로 사용자를 식별한다는 거지?

그렇습니다. 사용자의 정보가 담긴 캐비닛의 고유번호라고 생각하시면 됩니다. 중요한 정보는 캐비닛 안에 들어 있으므로 쿠키로 전달하는 방식보다 안전합니다.

그럼 세션 방식은 보안 위협이 없어?

아닙니다. 해커가 세션 아이디를 탈취해 사용자의 권한을 남용할 수 있습니다. 이를 방어하기 위해 HTTPS를 사용하고 세션 아이디의 경우 다른 쿠키와 달리 안전한 연결에만 전송해야 합니다.

그럼 사용자의 정보는 항상 세션으로 관리해야 할까?

아니요. 상황에 따라 적절한 방식을 사용해야 합니다. 세션은 여러 단점을 내포하고 있습니다. 서버에서 사용자 상태를 유지해야 하므로 사용자 수가 많아지면 부하가 증가하고 공간이 낭비됩니다. 또한 서버를 확장하는 경우 서버 간 사용자의 정보를 공유하기 위한 추가적인 비용이 발생하게 됩니다.

쿠키와 세션을 어떤 상황에서 사용해야 하는지 알려줘

쿠키는 사용자 정보를 클라이언트가 저장합니다. 따라서 서버의 무상태성을 보장하고 성능을 향상시킬 수 있습니다. 반면 세션은 서버에 저장하기 때문에 보안이나 무결성을 보장하는 측면에서 유리합니다. 따라서 중요한 정보의 보관은 세션을 사용하고 사용자의 상태를 저장하는 것은 쿠키를 사용하는 것이 좋습니다.

profile
안녕하세요

0개의 댓글