JWT 解码器
在下方粘贴JWT以解码和检查头部、载荷和签名。注意:本工具不验证签名。所有处理均在浏览器中本地完成。
已复制!
令牌信息
什么是JWT?
JSON Web Token(JWT)是一种紧凑的、URL安全的令牌格式,用于在各方之间安全传输信息。它由三部分组成,以点号(.)分隔:
- 头部 - 算法和令牌类型(如
HS256、RS256) - 载荷 - 声明/数据(如
sub、iat、exp) - 签名 - 验证令牌未被篡改
解码一个令牌并不能证明它什么,因为头部和载荷不过是 base64url,谁都能改写。要紧的是签名:把共享密钥粘进来,对 HS256、HS384 和 HS512,本页就在你的浏览器里完成校验。其余算法用私钥签名、用公钥验证,那种东西不该由这样一个页面让你粘贴。时间按你自己的时钟显示,并写出相差多久,因为你要找的通常就是过期时间。
注意:此工具仅 解码 令牌,不验证签名。
这些东西你到底是怎么存的?
哈希、令牌和密码的强度,取决于它们周围那段代码:成本因子还停在默认值,令牌没人检查过期时间,密钥被提交进了仓库。我们审查并加固应用,告诉你攻击者最先摸到的是哪一处。
预约一次安全审查常见问题
能解码是不是就说明令牌有效?
不是,这正是最该避开的误解。头部和载荷不过是 base64url,谁都能改写,做出一个解码得漂漂亮亮的东西。只有签名才能说明这个令牌确实来自它声称的一方。把密钥粘进来,本页面就会替你校验。
这里能校验哪些算法?
用共享密钥签名的 HS256、HS384 和 HS512。RS、ES 和 PS 令牌用私钥签名、用公钥验证,而无论哪一种,往网页里粘贴都是不该养成的习惯。那些请在你自己的代码里,用公布的密钥集去验证。
alg 为 none 的令牌是什么意思?
意思是它根本没有可用的签名,载荷想写什么都行。规范里保留它,是给那些用别的方式保护的令牌用的;而当某个库默认接受它时,这就是一个众所周知的攻击。如果你在真实令牌上看到它,就把这个令牌当成不可信的输入。
在这里粘贴真实令牌安全吗?
页面从不上传任何东西,所以没有内容离开你的浏览器。话虽如此,还在生效的令牌本身就是一份凭据,而密钥输入框被刻意排除在保存的设置和查询串之外,免得被无意存下或分享出去。凡是粘贴到你无法掌控的地方的,请一律吊销。
为什么过期时间会一并显示时间差?
因为你想知道的通常就是这个。一个四分钟前过期的令牌和一个四小时后过期的令牌,写成数字几乎一模一样,所以页面把两者都按你自己的时钟呈现,并写清相差多久。如果你要和服务器日志对照,也可以切换成 UTC。