JWT 특징과 주의 사항

김명수·2025년 10월 30일

매일메일

목록 보기
37/127
post-thumbnail

JWT 특징과 주의 사항

●JWT 특징과 주의 사항

  • JWT(Json Web Token) 은 통신 정보를 JSON 형식을 사용하여 안전하게 전송하기 위해 사용되며, JWT는 토큰 자체에 정보가 포함되어 있는 클레임 기반 토큰

  • 일반적인 애플리케이션에서 JWT는 주로 인증과 인가를 구현하기 위해 사용되며, 헤더, 페이로드, 시그니처로 구분

  • 헤더에는 토큰의 암호화 알고리즘이나 타입을 가지며, 페이로드에는 데이터(만료일, 사용자 정보 등)을 가지며 시그니처는 헤더와 페이로드가 변조되지 않았는지 판단하기 위해 사용되며, 헤더와 페이로드를 비밀 키를 사용하여 헤더에 명시된 암호화 알고리즘으로 암호화하여 시그니처가 만들어짐

  • JWT를 사용하여 인가를 구현하는 경우, 클레임 기반 토큰의 특성 덕분에 세션 기반 인증에 비해서 사용자 정보를 조회하기 위한 추가적인 작업이 필요하지 않으며, 서버가 상태를 관리하지 않기 때문에 서버가 이중화된 환경에서도 사용자의 로그인 정보를 일관성 있게 관리할 수 있음 (세션 불일치 문제가 발생하지 않음)

● JWT 사용 시 주의 사항

  • JWT는 디코딩이 쉬우며, Base64로 디코딩하면 페이로드를 확인할 수 있으며, 민감한 정보를 담는 것에 유의해야 함

  • 시크릿 키의 복잡도가 낮은 경우, 무작위 대입 공격(Brute force Attack)에 노출될 수 있으며, 강력한 시크릿 키를 사용하는 것이 권장

  • 시크릿 키는 유출되면 안되기 때문에 안전한 공간에 관리해야 함

  • JWT 탈취에 유의해야 하며 이를 위해서 JWT 저장 공간, 리프레시 토큰 도입 여부, Refresh Token Rotation, 탈취 감지 및 대응에 대해서 고민이 필요

  • 토큰의 잦은 갱신이 사용자 경험을 저해하는지 고려해야 하며 예를 들면, 사용자가 게시글을 3시간 동안 작성하고 제출했지만 JWT가 만료되어 사용자가 작성한 글은 사라질 수 있으며 이를 해결하기 위해서 슬라이딩 세션과 같은 전략을 고민해 볼 수 있음

-J WT none 알고리즘 공격을 유의해야 하며 공격자가 토큰의 헤더에 명시된 알고리즘을 none으로 변경하여, 페이로드가 변조되어도 시그니처 검증을 우회할 수 있으며 이를 해결하기 위해서 none 알고리즘 공격을 예방한 라이브러리를 사용하거나, none 알고리즘과 같이 약한 알고리즘에 대해서 필터링하는 등 주의가 필요

profile
신입개발자

0개의 댓글