문제상황
- JWT 토큰을 cookie에 담아 redirect를 해주는 방식으로 로그인을 구현함
- cookie 설정에
httpOnly
옵션을 설정
- 해당 옵션으로 인해 클라이언트에서 쿠키 읽기, 수정, 삭제 불가.
- 따라서 쿠키를 삭제하는 방식으로 로그아웃을 처리할 수 없었다.
학습
쿠키옵션
- httpOnly
- 쿠키를 브라우저의
JavaScript
에서 접근하지 못하게 함 ⇒ 클라이언트에서 쿠키삭제를 못하는 이유
- XSS(교차 사이트 스크립팅) 공격으로부터 쿠키를 보호
- secure
- 쿠키를 HTTPS 연결에서만 전송되도록 제한
- 네트워크에서 데이터를 탈취하는 공격(예: 중간자 공격)으로부터 쿠키를 보호
- sameSite
- 쿠키가 크로스 사이트 요청에서 전송되는 방식을 제어
- CSRF(사이트 간 요청 위조) 공격을 방지하는 데 도움이 됨
- 해당 값이 쿠키 설정시와 다르면 브라우저가 쿠키를 삭제하는 명령을 인식하지 못할 수 있음
- path
- 쿠키가 유효한 경로를 정의합니다. 이 경로에 속하지 않는 요청에는 쿠키가 전송되지 않음
- 쿠키를 특정 경로에서만 사용할 수 있도록 설정했을 경우, 삭제할 때도 동일한 경로로 설정해야만 삭제가 가능
⇒ 브라우저는 쿠키를 식별할 때 이름뿐만아니라 위의 4가지 옵션을 함께 고려
⇒ 따라서 정상적으로 삭제요청이 처리됨
해결