- 액세스 토큰은 프로그램상 자바스크립트 로컬 변수에 저장하고, http 헤더에 bearer 토큰으로 담아서 매 요청마다 보내도록 하자.
- 액세스 토큰을 쿠키에 담으면 CSRF 공격에 취약해진다.
- 즉, 해커가 내 인증정보를 활용해서 서버에 나인것처럼 속여서 요청을 보낼 수 있게 된다.
- 로컬스토리지는 사용하지 말자. (보안에 매우 취약)
- 브라우저의 로컬스토리지는 정말 편리하지만 XSS를 방어할 수 있는 방법이 없다.
- 단, 이 쿠키가
Http Only
이며Secure(https)
옵션이 켜져있을때 그렇다. 이 말은 쿠키를 자바스크립트로 읽어올 수 없다는 말이고 네트워크 감청을 통한 쿠키값 읽기를 방어한다는 말이다. 즉, XSS 공격을 통한 토큰 탈취를 방지할 수 있다.
- 그럼으로 리프레시 토큰은
HTTP ONLY
,SECURE
쿠키에 저장하자.- CSRF 공격에 의해 요청이 위조되어도 문제없다!
쿠키 옵션
httpOnly
→ 스크립트 상에서 접근이 불가능하도록 한다.secure
→ 패킷 감청을 막기 위해 https 통신 시에만 해당 쿠키를 사용하도록 한다.SameSite
→ Strict, Lax 모드가 있으며 Strict 모드에서는 같은 도메인 범위에서만 해당 쿠키를 사용하게 하며, Lax는 사용자가 페이지 이동 시 혹은 Form을 통한 Get 요청 시에만 허용된다.
출처
- https://velog.io/@0307kwon/JWT%EB%8A%94-%EC%96%B4%EB%94%94%EC%97%90-%EC%A0%80%EC%9E%A5%ED%95%B4%EC%95%BC%ED%95%A0%EA%B9%8C-localStorage-vs-cookie
- https://cjw-awdsd.tistory.com/48
- https://simsimjae.tistory.com/482?category=384816
- https://tecoble.techcourse.co.kr/post/2021-10-20-refresh-token/
- https://prolog.techcourse.co.kr/studylogs/2272
- https://velog.io/@msung99/Spring-Security-Refresh-token-Access-token-%EB%9E%80-%EA%B5%AC%ED%98%84%EB%B0%A9%EB%B2%95%EC%9D%80
- https://velog.io/@msung99/Spring-Security-Refresh-token-Access-token-%EB%9E%80-%EA%B5%AC%ED%98%84%EB%B0%A9%EB%B2%95%EC%9D%80
- https://prolog.techcourse.co.kr/studylogs/2272