본문 바로가기
web/SpringBoot

HttpOnly + Secure Cookies 생성

by 뽀리님 2023. 9. 12.

Https 로 설정까지 마쳤다면 HttpOnly 쿠키를 설정해보자

로그인 시 Refresh 토큰발급을 HttpOnly 쿠키로 발급하고자한다.

 

httpOnly란 Set-Cookie HTTP reponse 헤더에 포함되는 flag이다.

cookie를 생성할 때 HttpOnly를 사용하는 것은 브라우저가 HttpOnly를 지원할 경우 쿠키는 클라이언트 측 스크립트에 접근할 수 없다. 악성 스크립트(XSS 공격)에 의한 위험을 완화시켜준다.

 

, http only 쿠키 방식으로 저장된 정보는 Javscript Document.cookieAPI 접근이 불가능하다. 따라서 XSS 취약점 공격으로 담긴 값을 불러올 없다. 또한 CSRF 공격도 막을 있다.

 

1. 쿠키생성

ResponseCookie.from("refreshToken", refreshToken)
        .maxAge(Constants.AUTH_REFRESH_TOKEN_EXPIRE2)  // 리프레시 토큰의 유효 기간 (7일)
        .path("/")
        .secure(true)   // https 환경에서만 쿠키가 발동
        .sameSite("None") // 동일 사이트과 크로스 사이트에 모두 쿠키 전송이 가능
        .httpOnly(true) // 브라우저에서 쿠키에 접근할 수 없도록 제한
        .build().toString();

 

httpOnly() 옵션이랑, secure() 옵션을 사용하는걸로 정의한다.

참고로 Https 환경에서만 전송 가능하므로 미리 SSL 을 통해 세팅해놓는다.

 

호출하면 아래와같이 set-cookies 에 httponly 와 secure 옵션이 보인다.

세팅이 잘됬다

 

 

2. Token 갱신시 HttpOnly 쿠키 가져오기

@CookieValue("refreshToken") String refreshToken

 

@CookieValue 어노테이션을 통해 가져올 수 있다.

'web > SpringBoot' 카테고리의 다른 글

파일다운로드 시 PDF 워터마크 처리하기  (1) 2023.10.17
Properties 암호화하기  (0) 2023.10.12
HTTPS(SSL) 적용  (0) 2023.09.11
Maven VS Gradle  (0) 2023.09.07
ErrorContoller 오류처리  (0) 2023.09.06