Access Token과 Refresh Token을 어디에 저장해야 할까요?
2166
작성한 질문수 3
현재 프로젝트를 진행중인데, Access Token과 Refresh Token을 헤더에 담아 로컬스토리지에 저장하는 방법을 사용중입니다. 그런데 로컬 스토리지는 보안에 취약하다는 글을 보았습니다. 로컬 스토리지에 담아도 jwt 정책으로 대응이 가능하다는 글도 있었습니다. Access Token과 Refresh Token을 어디에 저장해야 할까요? 만약 로컬 스토리지나 쿠키에 저장한다면 어떻게 관리해야하나요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
유하정님, Access Token과 Refresh Token을 저장하는 방법에 대해 질문 주셨군요. 일반적으로 Access Token과 Refresh Token은 클라이언트 측에서 안전하게 관리되어야 합니다. 로컬 스토리지에 저장하는 방법은 편리하지만, XSS(Cross-Site Scripting) 공격에 취약할 수 있습니다. 따라서, 보안을 더 강화하고 싶다면 아래의 몇 가지 방법을 고려할 수 있습니다:
HttpOnly 쿠키 사용: 토큰을 HttpOnly 쿠키에 저장하면 자바스크립트를 통한 접근이 불가능해집니다. 이 방식은 XSS 공격으로부터 토큰을 보호할 수 있으나, CSRF(Cross-Site Request Forgery) 공격에 대해서는 추가적인 보호 방법을 강구해야 합니다.
Secure 쿠키와 함께 사용: Secure 쿠키 플래그를 사용하면 쿠키가 HTTPS를 통해서만 전송되도록 할 수 있습니다. 이 방법은 데이터가 암호화되어 전송되기 때문에 Man-In-The-Middle 공격으로부터 보호할 수 있습니다.
Refresh Token 저장 위치: 일반적으로 Refresh Token은 보안 요구사항이 더 높은 토큰입니다. 이를 안전하게 관리하기 위해 서버 측에서만 관리하고, 클라이언트 측에는 Access Token만을 저장하도록 구성할 수 있습니다. 클라이언트는 Access Token이 만료될 때마다 서버에 새 Token을 요청함으로써, 보안성을 높일 수 있습니다.
어느 방법을 선택하든, 보안 정책과 접근 제어를 세심하게 고려해야 하며, 가능하다면 OAuth 2.0과 같은 표준 권장 사항을 따르는 것이 좋습니다. 또한, 토큰이 탈취되는 것을 방지하기 위해 해당 토큰에 단기간의 유효시간을 적용하는 것이 일반적인 전략 중 하나입니다.
위 내용은 직접적으로 제공된 정보에 기반한 내용이 아니며, 일반적인 보안 가이드라인을 제시한 것입니다. 프로젝트의 특성에 맞게 적절한 방법을 선택하고 구현하시기 바랍니다.
트랙잭션 격리수준 선택에 대해서 질문
0
12
1
코딩 문제 사이트 접속 오류
0
9
1
재귀함수 연산법
0
21
2
동일성 동등성
0
18
1
안녕하세요 치킨 디도스 이벤트 보고 흉내내보려 들어왔습니다..
0
22
1
47번 리턴 관련 질문
0
24
1
실무 내용 문의드려요
0
27
2
IO활용-회원관리예제1 샘플코드 문의
0
20
1
join에대해 질문드립니다.
0
21
1
pg사가 있다고 가정하면
0
26
1
중급 1편 학습 방향에 대해 조언 부탁드립니다
0
36
1
To-Do App
0
27
1
강의노트 접속 불가
0
28
2
Kafka Cluster 구성도 질문
0
23
1
SingletonService가 JVM이 뜰 때 생성되는게 맞나요?
0
38
2
26년 1회차 기출 강의
0
58
2
임포트 오류
0
36
2
기출문제
0
56
1
정보처리기사 실기 zip
0
44
2
답을언제쯤받아볼수있나요
0
51
2
데이터베이스 노션
0
38
2
형 책 어떻게 받아?
1
60
1
PPT 자료 공유 받을 수 있을까요?
0
32
1
@JsonIgnore 이후 Internal Server Error가 발생하지 않습니다.
0
33
2





