웹 애플리케이션 개발에서 쿠키는 클라이언트와 서버 간의 상태 정보를 유지하는 역할을 한다.
위와 같은 특성 때문에 쿠키에 대한 관리를 고려하지 않는다면 크로스 사이트 스크립팅(XSS) 공격에 노출될 수 있다. 이러한 보안 위협을 최소화하기 위해 HTTP Only 쿠키를 사용하는 것이 권장된다.
일반 쿠키와 HTTP Only 쿠키의 간단한 차이점을 알아보고 Spring Framework에서 HTTP Only 쿠키를 어떻게 사용하는지 예제 코드를 통해 살펴보자.
쿠키란?
쿠키는 클라이언트의 브라우저에 저장하는 작은 데이터 조각으로 이후의 HTTP 요청에서 해당 정보를 활용하여 상태를 유지하는 데 사용된다.
일반 쿠키 | HTTP Only 쿠키 |
클라이언트 측에서 JavaScript와 같은 스크립트를 통해 접근, 수정 및 생성이 가능하다. | HttpOnly 플래그가 설정된 쿠키로 클라이언트 측 스크립트에서 접근할 수 없으며 오직 HTTP 프로토콜을 통해서만 서버와 통신할 때 사용된다. |
HTTP Only 쿠키의 사용 목적
HTTP Only 쿠키의 주된 목적은 크로스 사이트 스크립팅(XSS) 공격으로부터 사용자의 쿠키 정보를 보호하는 것이다.
XSS 공격은 공격자가 악의적인 스크립트를 웹 페이지에 삽입하여 다른 사용자의 브라우저에서 실행되게 하는 공격이다. 이러한 스크립트를 통해 공격자는 사용자의 세션 쿠키를 포함한 민감한 정보를 탈취할 수 있다.
HttpOnly 플래그가 설정된 쿠키는 이러한 스크립트에 의해 접근될 수 없으므로 사용자의 세션 정보를 보호하는 데 도움이 된다.
Spring Framework에서 HTTP Only 쿠키 사용하기
Spring Framework에서는 HttpServletResponse 객체를 통해 쉽게 HTTP Only 쿠키를 설정할 수 있다.

- Cookie 객체 생성: sessionId라는 이름으로 쿠키를 생성하고 값으로 "abc123"을 설정한다.
- HTTP Only 플래그 설정: cookie.setHttpOnly(true);를 통해 쿠키를 HTTP Only로 설정한다.
- Secure 플래그 설정(선택 사항): cookie.setSecure(true);를 통해 쿠키가 HTTPS 프로토콜에서만 전송되도록 설정할 수 있다.
- 쿠키 속성 설정: setPath와 setMaxAge를 통해 쿠키의 경로와 유효 기간을 설정한다.
- 쿠키 추가: response.addCookie(cookie);를 통해 응답 헤더에 쿠키를 추가한다.
‼ 주의사항
HTTP Only 쿠키는 만능이 아님 | XSS 공격으로부터 쿠키를 보호하지만 크로스 사이트 요청 위조(CSRF)와 같은 다른 공격에 대해서는 별도의 보안 조치가 필요하다. |
참고
https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies
HTTP 쿠키 - HTTP | MDN
HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각입니다. 브라우저는 그 데이터 조각들을 저장해 놓았다가, 동일한 서버에 재 요청 시 저장된 데이
developer.mozilla.org
'Dev > Network' 카테고리의 다른 글
『Network』 쿠키, 세션 (1) | 2024.11.29 |
---|---|
『Network』 HTTP(HyperText Transfer Protocol) (0) | 2024.11.28 |
『Network』 www.google.com을 주소 창에 쳤을 때 일어나는 과정 (0) | 2024.11.27 |
『Network』 한 번에 끝내는 DNS (1) | 2024.11.26 |
『Network』 User Mode와 Kernel Mode (0) | 2024.11.23 |