0Pricing
Cryptology Academy · 강의

안전한 JWT 구현 모범 사례

운영 환경의 앱에서 JWT를 안전하게 저장하고, 교체하고, 폐기합니다.

안전한 JWT 구현 모범 사례은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

핵심 원칙

JWT의 보안 수준은 구현 수준에 의해서만 결정됩니다. 사양은 유연하지만, 이러한 유연성은 취약점을 만듭니다. 운영 시스템에서 인증 우회로 이어져 온 일반적인 문제를 피하려면 다음 모범 사례를 따르십시오.

알고리즘 고정

예상 알고리즘을 항상 명시적으로 지정하십시오: jwt.decode(token, key, algorithms=["RS256"]). 검증 키나 코드 경로를 선택하기 위해 토큰 헤더에서 알고리즘을 읽지 마십시오. 이렇게 하면 alg=none 및 키 혼동 공격을 방지할 수 있습니다.

짧은 만료 시간과 갱신 토큰

액세스 토큰: 15~60분입니다. 갱신 토큰: 7~30일이며 httpOnly 쿠키에 저장합니다(localStorage에는 저장하지 않음). 만료되면 클라이언트는 갱신 토큰을 사용해 다시 인증하지 않고 인증 서버에서 새 액세스 토큰을 받습니다.

대상과 발급자 검증

토큰이 다른 서비스가 아니라 자신의 서비스를 대상으로 발급되었는지 확인하려면 aud(대상)를 검증하십시오. 자신의 인증 서버 URL을 기준으로 iss(발급자)를 검증하십시오. 이러한 검사가 없으면 동일한 키로 서명된 다른 애플리케이션의 토큰도 허용됩니다.

토큰 저장

메모리의 액세스 토큰(JS 변수) — 탭을 닫으면 삭제됩니다. httpOnly, Secure, SameSite=Strict 쿠키의 갱신 토큰 — JavaScript에서 접근할 수 없습니다. JWT를 localStorage에 절대 저장하지 마십시오. XSS가 이를 탈취할 수 있습니다.

폐기 전략

JWT는 무상태이므로 기본 제공되는 폐기 기능이 없습니다. 선택지는 다음과 같습니다. 각 요청에서 확인하는 폐기 목록(거부 목록)을 유지하거나, 매우 짧은 만료 시간을 사용하거나, 높은 보안이 필요한 상황에서 중앙 조회를 사용하는 불투명 토큰을 사용합니다.

키 교체

서명 키를 정기적으로 교체하십시오. 서로 다른 kid 값을 가진 여러 키를 JWKS에 게시하십시오. 교체하는 동안에는 새 kid로 새 토큰을 발급하고, 기존 토큰이 만료될 때까지 기존 키를 활성 상태로 유지한 다음 JWKS에서 기존 키를 제거하십시오.

페이로드의 민감한 데이터

민감한 데이터(비밀번호, 사회보장번호, 신용카드 정보)를 JWT 페이로드에 절대 넣지 마십시오. JWT는 암호화된 것이 아니라 base64url로 인코딩되어 있습니다. 암호화된 클레임이 필요하다면 JWE(JSON Web Encryption)를 사용하거나 민감한 데이터를 서버 측에 보관하십시오.

HTTPS만 사용

JWT는 HTTPS를 통해서만 전송하십시오. HTTP를 통해 JWT를 가로채면 인증을 완전히 우회할 수 있습니다. 쿠키에 Secure 플래그를 설정하십시오. 프로토콜 다운그레이드를 방지하려면 HSTS를 사용하십시오. 서버 로그에 전체 JWT 문자열을 절대 기록하지 마십시오.

라이브러리 선택

잘 유지 관리되는 라이브러리를 사용하십시오: PyJWT 2+, python-jose, auth0/node-jsonwebtoken 9+, Nimbus JOSE + JWT(Java). JWT 검증을 처음부터 직접 구현하지 마십시오. 라이브러리 취약점이 있는지 CVE 데이터베이스를 정기적으로 확인하십시오.

테스트

모든 공격 벡터를 테스트하십시오. alg=none 토큰, RS256→HS256 혼동 토큰, 만료된 토큰, 잘못된 대상 토큰, 변조된 페이로드를 제출해 보십시오. jwt.io를 사용해 테스트 토큰을 구성하십시오. 이러한 토큰이 401로 거부되는지 확인하는 통합 테스트를 추가하십시오.

빠른 확인

웹 애플리케이션에서 갱신 토큰은 어디에 저장해야 합니까?

요약

안전한 JWT 사용에는 알고리즘 고정, 짧은 액세스 토큰 만료 시간, 갱신 토큰의 httpOnly 쿠키 저장, 대상 및 발급자 검증, 키 교체가 필요합니다. 다음 주제: 암호학적 비밀 공유 방식입니다.

자주 묻는 질문

“안전한 JWT 구현 모범 사례” 강의는 무료인가요?

네 — “안전한 JWT 구현 모범 사례” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“안전한 JWT 구현 모범 사례”에서 뭘 배우나요?

운영 환경의 앱에서 JWT를 안전하게 저장하고, 교체하고, 폐기합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“안전한 JWT 구현 모범 사례” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. JWT 구조: 헤더, 페이로드, 서명
  2. HS256과 RS256: 대칭 및 비대칭 JWT
  3. JWT 취약점: alg=none 및 키 혼동
  4. 안전한 JWT 구현 모범 사례
← Cryptology Academy(으)로 돌아가기