I can do it(Feat. DEV)

초보자를 위한 쿠키와 세션 이해하기 본문

개발자 모드/개념

초보자를 위한 쿠키와 세션 이해하기

까짓거 해보자 개발자 2023. 4. 11. 16:59
728x90

웹 개발을 하다보면 쿠키와 세션을 자주 마주치게 되는데

매번 마주칠때마다 트루리셋이 되는 것 같아 

이번엔 정리하면서 이해 & 머리에 주입시켜볼려고 함.

 

쿠키(Cookie)와 세션(Session)은 모두 웹 어플리케이션에서 사용되는 데이터 저장 방식임.

1. 쿠키(Cookie)란?
- 사용자의 로그인 정보나 기타 정보를 브라우저에 저장하는 작은 데이터 파일
- 브라우저의 쿠키 스토리지에 저장되는 key-value 쌍으로, 서버로 전송되어 처리됨.
- 사용자의 개인 정보를 저장하기 때문에, 보완적인 측면에서 주의해야함(민감한 정보 저장은 피하고 쿠키를 암호화해서 처리하는게 좋음)
- 쿠키는 만료일이 지나면 자동으로 삭제가 되고, 만료일을 설정하지 않으면 브라우저가 종료될 때까지 쿠키가 유지됨.
- 웹 개발에서 매우 활용도가 높은데, 사용자의 로그인 정보나 사용자 설정 등을 저장하여, 사용자 경험을 향상시키고 개발 효율을 높일 수 있음.

이해를 돕기 위해 예를 들어 봄!

독자님이 인터넷 쇼핑몰에서 물건을 구입하려고 사이트에 접속해 로그인을 한 뒤,

상품 선택 후 결제를 진행한다고 가정해봄.

이 때 인터넷 쇼핑몰은 독자님에게 쿠키를 보내 당신의 브라우저(클라이언트)에 저장함.

이 쿠키는 독자님의 로그인 정보와 함께 저장이 되고, 독자님이 이 쇼핑몰 사이트를 다시 방문할 때마다,

쿠키에 저장된 정보로 로그인을 다시 하지 않아도 구매를 할 수 있음. 🤗

 

 

2. 세션(Session)이란?
- 세션은 쿠키와 달리 서버에서 관리하는데, 사용자가 웹 사이트에 접속하면 서버는 사용자에게 고유한 세션ID를 부여함.
- 서버는 세션 ID를 이용하여 사용자의 정보를 관리함. 사용자가 로그인하면, 서버는 사용자의 로그인 정보를 세션에 저장하고, 다른 페이지에서도 사용할 수 있도록 함.
- 세션은 일정 시간동안 유지되며, 사용자가 로그아웃하거나 브라우저를 종료하면 자동으로 삭제됨. 세션의 유효 시간은 서버에서 설정할 수 있음.
- 쿠키와 달리 사용자의 브라우저에 저장되지 않으므로, 보안성이 더 높고 사용자의 개인 정보가 서버에 저장되기 때문에, 정보 유출의 위험이 낮아짐.
- 서버에서 세션을 관리하기 때문에, 사용자의 브라우저에 저장되는 쿠키보다 더 많은 자원을 소비함. 따라서, 세션을 사용할 때는 서버의 자원 관리에 유의해야 함.

필자가 공부를 해보니 쿠키와 세션의 가장 큰 차이점은 저장위치가 아닌가 싶음.

저장 위치가 클라이언트냐 서버냐에 따라 다름으로써

자원의 소비량, 보안성 등이 달라지기 때문에(주관적 판단임😁)

 

최근에는 쿠키와 세션 말고도 다양한 인증 방식이 있는데, OAuth2.0이나 JWT(JSON Web Tokens) 등이 있음.

이러한 인증 방식들은 쿠키와 세션의 보안적인 취약점을 보완하고, 웹 개발에서 보다 안전하고 효율적인 인증 방식을 제공함.

필자도 JWT를 사용하여 인증 방식을 구현한 경험이 있음.

보통 로그인할 때 토큰을 발급받아 토큰안에 저장되어 있는 정보로 인증을 진행함.

세션처럼 서버에 저장하는 것이 아니라서 서버 부하가 줄어드는 장점이 있었음.

But, JWT도 세션이나 쿠키처럼 취약점은 존재함.

고로 개발할 때 어떤 전략을 사용하느냐에 따라 보안성을 높일 수 있는 방법도 달라진다는 것 유의!!😉

 

오늘은 우중충한 날씬데 다들 기분은 행복하길👍

728x90