2016-08-17 1 views
1

가 나는 사용자에 대한 JWT 토큰을 생성하고 페이로드 (payload)를한다고 가정하자 : HTTPS 및 SSL 사용하는 경우JWT가 : 내 페이로드에 신뢰할 수있는 얼마나 많은

['userID'=>1, 'role'=>'user'] 를, 그것은 역할 또는를 보내 안전한가요 페이로드를 통한 기타 민감한 정보? 보낸 사람이 페이로드 값을 조작 할 수 있습니까?

업데이트 : 이제 JWT 토큰이 디코딩 가능하다는 것을 알고 있습니다. 그러나 서명을 가지고 있기 때문에 값을 갱신하면 토큰이 무효화됩니다. 페이로드가 완전히 암호화되도록하려면 JWE을 시도하십시오!

답변

1

JWT 토큰은 발급자가 디지털 서명을하므로 서명을 무효화하지 않고는 수정할 수 없습니다.

HTTPS는 토큰이 도난 당하지 않도록하기 위해서만 필요합니다.

2

페이로드의 클레임은 키를 사용하여 조작 할 수 없으며 일반적인 예는 admin = false입니다. 클라이언트와 서버 모두이 사용자가 관리자가 아님을 볼 수 있습니다. 사용자가 토큰을 (관리자가되기 위해) 시도하고 조작하려는 경우 제대로 검증되지 않습니다. 이 때문에 토큰을 확인하기 전에 토큰을 확인하는 것이 매우 중요합니다.

그러나 일반적으로 클레임이 암호화되어 있지 않으므로 신용 카드 번호와 같은 중요한 정보를 입력하지 않아도됩니다. 아무도 사용자의 토큰에 액세스 할 수 없으므로 세션을 인계받을 수 있습니다.

https://jwt.io/

+0

그래서 모든 주장 일반 텍스트로 소비자에게 볼 수 있습니다 여기에 토큰을 조작과 플레이가 있습니까? 내 말은 토큰이 ugly1.ugly2.ugly3 문자열로 인코딩되고 비밀이 소비자에게 공개되지 않는다면 페이로드를 해독 할 수있는 방법은 무엇입니까? – HPM

+0

스택 오버 플로우 문서 [JSON 웹 토큰 소개] (http://stackoverflow.com/documentation/jwt/5213/introduction-to-json-web-tokens/18559/signed-jwt-jws#t)를 살펴보십시오. = 201608220422564473964). 그들은 base64로 인코딩되어 있기 때문에 디코딩 할 키가 필요하지 않습니다. (Google : base64 디코드) – Alex