개발자 도구 · JWT 디코더
RFC 8725 설명: JWT 검증자를 위한 현재 모범 사례
· 배경
jwt 보안 인증
IETF는 알려진 JWT 함정을 하나의 모범 사례 문서로 수집했습니다. 이 게시물에서는 권장 사항을 살펴보고 각 권장 사항을 예방하는 사고 클래스에 연결합니다.
반복되는 JWT 실패는 검증자 체크리스트에 동기를 부여합니다. 저장소 소스는 게시 기록을 설정하지 않습니다.
유연한 토큰 형식은 검증자가 제한해야 하는 조합을 허용합니다. 반복되는 실수에는 알고리즘 레이블을 신뢰하는 것, 잘못된 발행자 또는 청중 아래에서 토큰을 수락하는 것, 공격자가 선택한 키 자료를 따르는 것 등이 포함됩니다. 체크리스트는 이러한 광범위한 위험을 실제 승인 경계에서 거부 테스트로 변환합니다.
개요는 출판 내역을 특정 연도에 귀속시키지만 저장소 소스는 해당 내역을 확인하지 않으므로 이 섹션에서는 이를 생략합니다. 실행 가능한 구별은 로컬로 설정됩니다. ToolAcre는 디코딩만 하고 모든 모범 사례 결정은 구성된 검증자에 속합니다.
알고리즘 고정 및 거부 없음 — alg:none 및 주요 혼란을 해결하는 권장 사항
헤더와 별도로 허용된 알고리즘을 고정하고 서명이 필요한 흐름에서 서명되지 않은 입력을 거부합니다. 허용된 각 알고리즘 계열을 올바른 키 유형에 바인딩합니다. 토큰이 검증기를 비대칭 검사에서 HMAC로 전환하도록 허용하지 않거나 `none`를 사용하여 검사를 비활성화하지 마세요.
ToolAcre는 `none` 플래그를 지정하고 인식된 레이블을 설명하지만 해당 경고는 아무 것도 적용하지 않습니다. 백엔드에 대한 부정적인 테스트를 통해 실제 정책을 입증하십시오. 예상치 못한 알고리즘, 빈 서명 및 잘못된 키 유형은 처음 두 세그먼트가 디코딩 가능한 상태로 유지되더라도 실패해야 합니다.
대상 및 발급자 검증 - 서비스 간 재생에 대한 권장 사항
신뢰할 수 있는 키 구성에 따라 발급자를 인증한 다음 의도한 대상과 소비 서비스를 비교합니다. 상황별 클레임 확인 없이 유효한 서명을 사용하더라도 잘못된 위치에서 토큰을 승인할 수 있습니다. 복사된 발급자 문자열 자체는 키 바인딩이 아닙니다.
디코더는 예상 구성을 알지 못한 채 `iss` 및 `aud` 값을 표시합니다. 판단을 내리는 것이 아니라 테스트 사례를 식별하는 데 이러한 가시성을 사용하십시오. 승인 테스트에서는 잘못된 발행자, 잘못된 대상 및 서명 실패를 구별해야 운영 로그가 유용하게 유지됩니다.
명시적 유형 사용 - 토큰 대체에 대한 방어 수단으로 typ 헤더
명시적 토큰 유형을 사용하면 유사한 소유권 주장 형태를 재사용하는 프로필을 분리할 수 있습니다. 검증자는 특정 엔드포인트에 대해 예상되는 유형을 알아야 하며 서명된 모든 JWT을 상호 교환 가능한 것으로 처리하는 대신 호환되지 않는 프로필을 거부해야 합니다.
`typ` 헤더는 확인될 때까지 여전히 신뢰할 수 없으며 ToolAcre는 해당 문자열이 `JWT`과 다를 때만 경고합니다. 액세스 토큰 프로필, 중첩된 콘텐츠 또는 공급자 규칙의 유효성을 검사하지 않습니다. 애플리케이션에서 유형 규칙을 정의하고 대체 시도를 테스트합니다.
jku, x5u 또는 내장 키를 신뢰하지 마십시오 — 키 소스 권장 사항
`jku`, `x5u`, 내장된 JWK 데이터 또는 인증서 배열이 보호된 헤더에 표시된다는 이유만으로 키 소스를 설정하지 않도록 하세요. 독립적으로 신뢰할 수 있는 발급자 관계와 제한된 검색 정책을 통해 키를 확인합니다. `kid`은(는) 해당 경계 내의 선택기로만 처리됩니다.
ToolAcre는 헤더 값에서 네트워크 조회를 수행하지 않습니다. 이는 일반 검사기의 올바른 동작입니다. 감사 중에 헤더 메타데이터부터 파일 시스템, 캐시, 데이터베이스 및 네트워크 작업까지 모든 경로를 추적한 다음 토큰 제어 입력에서 신뢰를 생성하는 모든 경로를 거부합니다.
암호화 입력 및 암호화된 콘텐츠 안내는 선택한 라이브러리 및 프로필에서 확인해야 합니다.
암호화 구현은 입력의 유효성을 검사하고 선택한 프로필의 규칙을 따라야 합니다. 암호화 설계에서는 압축 및 관찰 가능한 데이터에 대해서도 주의가 필요합니다. 정확한 API와 기본값은 라이브러리별로 다르며 이 저장소에 존재하지 않습니다. 따라서 이 문서에서는 스위치를 고안하거나 보편적 지원을 주장하지 않습니다.
배포된 라이브러리 및 버전에 대한 현재 문서를 읽은 다음 잘못된 입력 및 정책 불일치 테스트를 빌드하세요. 디코더의 깨끗한 INVALID_JWT 오류는 우수한 검사 인체공학성을 보여 주지만 별도의 검증기가 암호화 엣지 케이스를 올바르게 처리한다는 증거는 아닙니다.
실제 사례 — 체크리스트에 대한 확인 루틴 감사
신뢰할 수 있는 발급자 구성, 허용된 알고리즘, 키 소스, 대상, 토큰 유형, 시간 정책 및 애플리케이션 클레임을 나열하여 확인 루틴을 감사합니다. 각 항목에 대해 구문상으로는 읽을 수 있지만 정확히 하나의 기대치를 위반하는 부정 토큰을 추가하세요. 실제 경계에서 거부를 확인합니다.
ToolAcre를 사용하여 각 고정물이 주장하는 내용을 검사하고 의도한 돌연변이가 존재하는지 확인하세요. 고정물이 유효하지 않다는 주장으로 출력을 사용하지 마십시오. 검증자 응답과 로그는 해당 증거를 제공하는 반면 디코더는 허용된 사례와 거부된 사례 전반에 걸쳐 일정하게 유지됩니다.
요약: 라이브러리가 아닌 체크리스트 - ToolAcre JWT 디코더는 감사 중에 토큰을 검사하는 데 도움이 됩니다. 관행은 귀하가 작성한 검증자에게 적용됩니다.
모범 사례 문서는 검증 라이브러리가 아닌 체크리스트입니다. 팀이 권장 사항을 명시적인 구성, 좁은 신뢰 관계 및 실패 시 종료되는 테스트로 변환할 때 그 가치가 나타납니다. 디코더는 해당 작업 중에 토큰 입력을 읽을 수 있게 만들 수 있지만 컨트롤을 구현할 수는 없습니다.
문서 및 UI의 경계를 유지합니다. 디코딩이란 읽을 수 있음, 정품이 아님, 수정되지 않음, 승인됨 또는 허용 가능함을 의미합니다. 토큰 외부에 정책을 고정하고 먼저 확인하고 두 번째로 클레임을 적용합니다. ToolAcre는 모든 결정을 내리기 전에 의도적으로 중지됩니다.