쿠키란 무엇인가
쿠키는 웹사이트가 사용자의 브라우저에 저장하는 아주 작은 데이터이다. 주로 클라이언트와 서버 간의 상태를 유지하거나, 사용자 정보를 저장하는 데 사용된다. 예를 들어, 로그인 상태 유지, 사용자 설정 저장 등이 쿠키를 통해 가능하다.
쿠키의 특징
- 상태 유지를 돕는 역할
HTTP는 무상태(Stateless) 프로토콜로, 각 요청 간의 상태를 유지하지 않는다.
하지만 쿠키를 통해 사용자 정보를 저장하면 서버가 요청 간의 상태를 유지할 수 있다. - 서버 비용 절감
쿠키는 클라이언트(브라우저)에 저장되므로, 서버에서 데이터를 직접 관리할 필요가 없다. 이는 서버 자원을 절약하는 데 유리하다. - 브라우저 종속성
쿠키는 특정 브라우저에 종속된다. 같은 기기에서도 다른 브라우저 간에는 쿠키가 공유되지 않는다. - 생성 주체
쿠키는 주로 서버에서 생성되며, 클라이언트에 전달되어 저장된다.
쿠키의 활용 예
- 로그인 상태 유지
- 장바구니 정보 저장
- 사용자 설정(예: 다크 모드)
쿠키 옵션
- HttpOnly
- 쿠키에 대해 클라이언트 측 스크립트(JavaScript) 접근을 차단한다.
- 보안 강화에 유리하며, document.cookie로 조회하거나 조작할 수 없다.
- Secure
- HTTPS 프로토콜에서만 쿠키가 전송되도록 제한한다.
- 데이터가 암호화된 채 전송되므로 보안성이 높다.
- SameSite
- 쿠키가 동일 출처(SameSite)에서만 전송되도록 설정한다.
- 이를 통해 CSRF(교차 사이트 요청 위조) 공격을 방지할 수 있다.
토큰 기반 인증과의 차이
- 세션 기반 인증
- 서버가 세션 정보를 관리하며, 상태를 유지한다.
- 서버의 리소스를 소모하고 확장성이 떨어진다.
- 토큰 기반 인증
- 세션을 사용하지 않고, 클라이언트 측에서 인증 정보를 관리한다.
- JSON 형식의 데이터를 JWT(JSON Web Token)로 변환해 쿠키에 저장한다.
- 서버는 클라이언트로부터 토큰을 받아 복호화한 후, 유효성을 확인한다.
쿠키는 웹 애플리케이션에서 사용자 경험을 개선하고, 상태를 관리하는 데 중요한 역할을 한다. 특히 보안 설정(HttpOnly, Secure, SameSite)을 통해 안전하게 사용할 수 있다. 반면, 토큰 기반 인증은 서버 부담을 줄이고 확장성을 높이는 데 유리하며, 쿠키와 토큰 인증은 각각의 장단점을 활용해 혼합 사용되기도 한다.
'spring > [Spring Security] 기본' 카테고리의 다른 글
| 사용하는 용어 정리 (0) | 2024.08.03 |
|---|---|
| 요청처리 (0) | 2024.07.05 |
| 스프링 시큐리티 (0) | 2024.07.04 |
| Hashing (0) | 2024.07.03 |
| 인증/보안 (0) | 2024.07.03 |