- 2024.06.27.보안 day582024년 06월 27일 09시 08분 31초에 업로드 된 글입니다.작성자: 202401to07
DemoProjV
어제 한 것 : 취약점 체크리스트 작성
오늘 할 것 : 체크리스트 기반 모의해킹 및 보안점검
http://192.168.30.254:8083/DemoProjV2/
1.토큰사용목적
단일토큰 :
1. 로그인성공 JWT 발급 서버측 -> 클라이언트로 JWT 발급
2. 권한이 필요한 모든 요청 : 클라이언트 -> 서버측 JWT 전송
권한이 필요한 요청은 서비스에서 많이 발생
클라이언트측 xxs나 http통신을 가로채서 토큰을 훔침
이를 대비하기 위한 로직이 필요.
다중토큰 : refresh 토큰
access/Refresh 토큰
생명주기를 짧게 발급 (약10분) , 토큰이 만료 되었을때 함께 받은 Refresh 토큰 (24시간) 토큰 재발급
1. 로그인 성공시 2개 토큰
Access 토큰 : 권한이 필요한 모든 헤더에 사용될 JWT 생명주기를 짧게 함
Refresh 토큰 : 재발급을 위한 토큰으로 24시간 생명주기
2. 권한이 필요한 모든요청은 Access 토큰을 사용
3. Access 토큰이 만료될경우 Refresh 토큰을 검증 후 Access 토큰을 재발급
==========================================================
포인트
1. 로그인이 완료되면 successHandler에서 Access/Refresh 토큰 2개 발급해 응답
2. Access 토큰을 요청을 검증하는 JWTFilter에서 Access 토큰이 만료된경우 상태 코드와 메시지를 응답
3. 프론트측 API 요청시 Access 토큰 만료 요청이 오면 예외문을 통해 Refresh 토큰을 서버측으로 전송
Acccess 토큰을 새로 받는 로직 수행
4. 서버측에서는 토큰을 받을 엔드포인트 구성 Refresh 검증후 Access 를 응답
단일 -> 다중 으로 전환되면 Access 토큰이 탈취되더라도 생명주기가 짧아 피해가 줄어듬
그래서 Refresh 토큰에 대한 보호 방법이 필요
Access/Refresh 토큰의 저장위치 고려
Refresh 토큰 Rotate 에 대한 부분 ( Access 토큰 갱신시 Refresh 토큰도 재발급 )
Access/Refrsh 토큰 저장위치
기존 저장 로직
로컬스토리지 : xss 공격에 취약 : Access 토큰저장
httpOnly 쿠키 : CSRF 공격에 취약 : Refresh 토큰저장
고려사항
JWT의 탈취는 XSS 공격으로 로컬스토리지에 저장된 JWT를 가져감
쿠키방식은 CSRF공격에 취약하기 대문에 저장소가 중요
Access 토큰
보통 로컬 스토리지에 저장되고 짧은 생명주기
Refresh 토큰
주로 쿠키에 저장 httpOnly를 설정하면 방어 가능
Refresh 토큰은 Rotate를 통해서
Access 토큰 발급시 Refresh토큰도 갱신하여 방어 조치를 함
가장강력한보안
로그아웃을할떄 Access/Refresh 토큰을 초기화하고 제거함
Refresh 토큰 블랙리스팅
====================================================================
라이브러리추가
maven
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.12.5</version> <!-- 최신 버전 확인하여 업데이트 가능 -->
</dependency>
** Libraries에서 확인할것 **
============================================='보안' 카테고리의 다른 글
2024.07.01.보안 day60 (0) 2024.07.01 2024.06.28.보안 day59 (0) 2024.06.28 2024.06.24.보안 day55 (0) 2024.06.24 2024.06.21.보안 day54 (0) 2024.06.21 2024.06.20.보안 day53 (0) 2024.06.20 다음글이 없습니다.이전글이 없습니다.댓글