개발자 도구 · JWT 디코더
JWT 페이로드는 암호화되지 않습니다. 토큰이 있는 사람은 누구나 읽을 수 있습니다.
· 그것이 중요한 이유
jwt 개인정보 보호 보안
Base64url은 스크램블링처럼 보이지만 가역적 인코딩입니다. 이 게시물에서는 서명된 토큰의 클레임이 얼마나 읽기 쉬운지, 그 안에 무엇이 포함되어 있는지, 대신 JWE가 필요한 시기를 보여줍니다.
암호화된 것 같다 — 개인 데이터를 토큰에 넣는 오해
긴 base64url 세그먼트는 뒤죽박죽된 것처럼 보이며 이는 팀이 이를 숨겨진 데이터로 취급하도록 유도합니다. 시각적 효과가 오해의 소지가 있습니다. 서명된 JWT을(를) 보유한 사람은 누구나 서명 또는 확인 키 없이 공개 인코딩을 반전하고 JSON 페이로드를 읽을 수 있습니다.
ToolAcre는 헤더와 페이로드를 로컬로 디코딩하여 해당 속성을 보여줍니다. 일반 JWS 페이로드는 암호화되지 않으므로 암호화가 깨지지 않습니다. 검사의 용이성은 토큰 디자인을 형성해야 합니다. 즉, 모든 합법적인 보유자와 모든 우발적인 수신자가 볼 수 있는 정보만 인코딩해야 합니다.
서명됨, 봉인되지 않음: 유효한 JWS는 페이로드 기밀성이 아닌 무결성을 보호할 수 있습니다.
유효한 서명 또는 MAC를 사용하면 적절하게 구성된 검증자가 변경 사항을 감지하고 토큰을 신뢰할 수 있는 키 자료와 연결할 수 있습니다. 이는 검증자의 정책 내 무결성 및 출처 증거입니다. 클라이언트, 프록시, 로거 또는 압축 문자열을 얻는 다른 사람으로부터 보호된 콘텐츠를 숨기지 않습니다.
디코더는 확인하지 않기 때문에 해당 무결성조차 설정할 수 없습니다. 토큰 자체에 대해 말하는 내용을 표시하고 서명 바이트를 확인되지 않은 것으로 보고합니다. 이러한 구별은 두 가지 상반된 실수를 방지합니다. 읽을 수 있다는 가정은 위조를 의미하고 서명이 있다고 가정하면 기밀을 의미합니다.
디코더가 표시하는 것 — 키가 필요 없는 일반 JSON의 모든 클레임
헤더 및 페이로드의 경우 ToolAcre는 base64url을 변환하고 패딩을 복원하며 바이트를 UTF-8로 복구하고 JSON 개체를 구문 분석합니다. 비밀은 참여하지 않습니다. 그런 다음 클레임 테이블에는 문자열 값이 직접 표시되고 구조화된 값이 `sub`, `aud` 및 `exp`와 같은 등록된 이름에 대한 설명과 함께 JSON 텍스트로 표시됩니다.
해당 출력은 진실 오라클이 아니라 투명성을 지원하는 것입니다. 조작된 토큰은 합법적인 토큰과 동일한 주체 및 역할을 표시할 수 있습니다. 청구서를 읽으려면 키가 필요하지 않습니다. 소비 서비스에서 성공적인 확인과 발급자, 대상자, 시간 및 애플리케이션 확인이 필요하다고 믿습니다.
토큰이 유출되는 위치 — 로그, URL, 리퍼러 헤더, 브라우저 기록 및 타사 스크립트
토큰은 애플리케이션 로그, 복사된 지원 메시지, URL, 리퍼러 전파, 브라우저 기록, 필드에 액세스할 수 있는 스크린샷 및 스크립트를 통해 유출될 수 있습니다. 정확한 경로는 시스템에 따라 다르지만 페이로드의 가독성은 만료되었거나 사용할 수 없는 토큰이 여전히 개인 또는 운영 정보를 공개할 수 있음을 의미합니다.
URL 쿼리 문자열 및 루틴 로그에서 압축 자격 증명을 유지합니다. 진단을 공유하기 전에 수정하세요. 서명은 클레임을 삭제하지 않으며 전송 암호화는 엔드포인트 간 이동 중에만 데이터를 보호합니다. 승인된 엔드포인트 및 실수로 저장한 경우에도 여전히 일반 텍스트 토큰 문자를 볼 수 있습니다.
페이로드에 속하는 것 — 식별자 및 인증 데이터, 소유자가 볼 수 없는 비밀이나 데이터는 절대 아닙니다.
페이로드에는 일반적으로 수신자가 확인 후 결정을 내릴 수 있도록 식별자와 승인 컨텍스트가 필요합니다. 토큰 보유자가 읽지 못하도록 해야 하는 비밀번호, 개인 키 또는 정보를 가지고 있어서는 안 됩니다. 개인 데이터를 최소화하고 소비 서비스에 필요하지 않은 프로필 필드의 편리한 중복을 방지합니다.
역할과 범위는 인코딩되었기 때문에 비밀이 아니지만 확인될 때까지는 여전히 신뢰할 수 없습니다. 최소한의 공개와 최소한의 권한을 중심으로 클레임 집합을 디자인합니다. 소비자가 문서화된 작업을 수행하는 데 필드가 필요하지 않은 경우 해당 필드를 제외하면 모든 누출 결과가 줄어듭니다.
실제 사례 — 샘플 토큰을 디코딩하고 방관자가 배울 내용을 정확하게 나열합니다.
`sub`, `email`, `tenant`, `roles`, `iat` 및 `exp`를 포함하는 합성 페이로드를 디코딩합니다. 방관자는 키 없이 기명 계정 식별자, 주소, 조직 컨텍스트, 주장된 권한 및 타이밍을 학습합니다. 그러한 주장이 진짜인지 여부는 다른 질문입니다. 그들의 텍스트는 이미 공개되었습니다.
만료된 자료나 테스트 자료만 사용하여 발급자가 생성한 각 토큰 프로필에 대해 감사를 반복합니다. 모든 필드와 해당 소비자를 기록합니다. ToolAcre는 눈에 보이는 콘텐츠를 열거하는 데 도움이 될 수 있지만 조직에 대한 합법적인 처리, 민감도 또는 보관 규칙을 결정할 수는 없습니다.
암호화된 압축 토큰은 5개 부분으로 구성되며, 이 JWS 디코더는 이를 해독하지 않고 식별합니다.
소유권 주장이 보유자나 중개인으로부터 기밀로 유지되어야 하는 경우 암호화된 디자인이 필요할 수 있습니다. Compact JWE는 다섯 부분으로 구성되어 있으며 수신자 암호 해독 키를 사용합니다. ToolAcre는 5개의 세그먼트를 암호화된 입력으로 식별하고 키 없이는 내용을 공개할 수 없다고 설명합니다.
암호화는 이 디코더를 넘어서는 키 배포, 알고리즘 정책 및 작동 실패 모드를 도입합니다. 또한 무결성 및 인증 확인이 필요하지 않습니다. 더 적은 양의 데이터를 포함해야 하는 페이로드에 대한 외관상의 업그레이드보다는 위협 모델에서 선택하십시오.
요약: 페이로드가 공개라고 가정합니다. ToolAcre JWT 디코더에서 자신의 토큰 중 하나를 디코딩하고 노출되는 내용을 감사합니다.
토큰이 이동하는 곳 어디에서나 일반 JWT 페이로드를 읽을 수 있다고 가정합니다. ToolAcre의 디코드 전용 보기를 사용하여 값을 발행한 사람을 증명하는 것이 아니라 청구 노출을 감사하세요. 비밀과 불필요한 개인 필드를 모호하게 하기 위해 base64url에 의존하는 대신 제거하세요.
기밀성이 정말로 필요한 경우 문서화된 보안 속성에 이를 포함하는 메커니즘을 사용하고 그에 따라 키를 관리하십시오. 서명된 것이든 암호화된 것이든 신뢰는 여전히 구성된 암호화 유효성 검사 및 정책에서 비롯되며 디코더가 구조화된 출력을 표시한다는 사실에서 비롯되지 않습니다.