일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 스프링
- 깃
- 스프링 시큐리티
- spring security 로그인
- ChatGPT
- git
- Spring Security
- react 심플캡차
- spring error
- jpa
- react 캡차
- CI
- 리액트 캡차
- 리액트 심플캡차
- 스프링 시큐리티 로그인
- react 자동입력방지
- Spring Boot
- maven
- REACT
- SpringBoot
- Docker
- react captcha
- react simple captcha
- Security 로그인
- build
- error
- 에러
- react 상태
- 젠킨스
- myBatis
- Today
- Total
I can do it(Feat. DEV)
초보자를 위한 쿠키와 세션 이해하기 본문
웹 개발을 하다보면 쿠키와 세션을 자주 마주치게 되는데
매번 마주칠때마다 트루리셋이 되는 것 같아
이번엔 정리하면서 이해 & 머리에 주입시켜볼려고 함.

쿠키(Cookie)와 세션(Session)은 모두 웹 어플리케이션에서 사용되는 데이터 저장 방식임.
1. 쿠키(Cookie)란?
- 사용자의 로그인 정보나 기타 정보를 브라우저에 저장하는 작은 데이터 파일
- 브라우저의 쿠키 스토리지에 저장되는 key-value 쌍으로, 서버로 전송되어 처리됨.
- 사용자의 개인 정보를 저장하기 때문에, 보완적인 측면에서 주의해야함(민감한 정보 저장은 피하고 쿠키를 암호화해서 처리하는게 좋음)
- 쿠키는 만료일이 지나면 자동으로 삭제가 되고, 만료일을 설정하지 않으면 브라우저가 종료될 때까지 쿠키가 유지됨.
- 웹 개발에서 매우 활용도가 높은데, 사용자의 로그인 정보나 사용자 설정 등을 저장하여, 사용자 경험을 향상시키고 개발 효율을 높일 수 있음.
이해를 돕기 위해 예를 들어 봄!
독자님이 인터넷 쇼핑몰에서 물건을 구입하려고 사이트에 접속해 로그인을 한 뒤,
상품 선택 후 결제를 진행한다고 가정해봄.
이 때 인터넷 쇼핑몰은 독자님에게 쿠키를 보내 당신의 브라우저(클라이언트)에 저장함.
이 쿠키는 독자님의 로그인 정보와 함께 저장이 되고, 독자님이 이 쇼핑몰 사이트를 다시 방문할 때마다,
쿠키에 저장된 정보로 로그인을 다시 하지 않아도 구매를 할 수 있음. 🤗
2. 세션(Session)이란?
- 세션은 쿠키와 달리 서버에서 관리하는데, 사용자가 웹 사이트에 접속하면 서버는 사용자에게 고유한 세션ID를 부여함.
- 서버는 세션 ID를 이용하여 사용자의 정보를 관리함. 사용자가 로그인하면, 서버는 사용자의 로그인 정보를 세션에 저장하고, 다른 페이지에서도 사용할 수 있도록 함.
- 세션은 일정 시간동안 유지되며, 사용자가 로그아웃하거나 브라우저를 종료하면 자동으로 삭제됨. 세션의 유효 시간은 서버에서 설정할 수 있음.
- 쿠키와 달리 사용자의 브라우저에 저장되지 않으므로, 보안성이 더 높고 사용자의 개인 정보가 서버에 저장되기 때문에, 정보 유출의 위험이 낮아짐.
- 서버에서 세션을 관리하기 때문에, 사용자의 브라우저에 저장되는 쿠키보다 더 많은 자원을 소비함. 따라서, 세션을 사용할 때는 서버의 자원 관리에 유의해야 함.
필자가 공부를 해보니 쿠키와 세션의 가장 큰 차이점은 저장위치가 아닌가 싶음.
저장 위치가 클라이언트냐 서버냐에 따라 다름으로써
자원의 소비량, 보안성 등이 달라지기 때문에(주관적 판단임😁)
최근에는 쿠키와 세션 말고도 다양한 인증 방식이 있는데, OAuth2.0이나 JWT(JSON Web Tokens) 등이 있음.
이러한 인증 방식들은 쿠키와 세션의 보안적인 취약점을 보완하고, 웹 개발에서 보다 안전하고 효율적인 인증 방식을 제공함.
필자도 JWT를 사용하여 인증 방식을 구현한 경험이 있음.
보통 로그인할 때 토큰을 발급받아 토큰안에 저장되어 있는 정보로 인증을 진행함.
세션처럼 서버에 저장하는 것이 아니라서 서버 부하가 줄어드는 장점이 있었음.
But, JWT도 세션이나 쿠키처럼 취약점은 존재함.
고로 개발할 때 어떤 전략을 사용하느냐에 따라 보안성을 높일 수 있는 방법도 달라진다는 것 유의!!😉
오늘은 우중충한 날씬데 다들 기분은 행복하길👍
'개발자 모드 > 개념' 카테고리의 다른 글
[CentOs] shell(.sh) 파일 만들기 (0) | 2023.06.19 |
---|---|
[Bat]간단한 배치 파일 만들기 (0) | 2023.06.09 |
git에 package.json, package-lock.json 파일을 관리해야할까? (0) | 2023.03.24 |
프록시 서버(Proxy Server) 대체 무엇? (0) | 2023.03.10 |
[Tomcat] Log 종류 (0) | 2023.02.06 |