头部为 "alg": "none"、第二个点号之后没有任何内容的令牌,是合法的“未受保护的 JWS”。2015年3月,Tim McLean 发现几个流行的 JWT 库把它当作普通算法处理,攻击者因此可以去掉签名、设置 none,让任意声明被接受;RFC 8725 §2.1 描述了这种攻击。
现代库默认拒绝 none,除非调用方显式启用;显式的算法允许列表(例如只允许 ES256)从设计上就把它排除在外。需要留意:手写检查中的大小写变体(None、NONE),调用“decode”函数而不是“verify”函数的验证器,以及签名部分为空时跳过验证的中间件。