能够在 JWT 访问令牌的 Header 部分没有任何值的情况下访问 API
Able to access an API without having any values in Header part of JWT Access Token
我正在测试使用 OAuth 机制授权和访问 API 的 Web 应用程序。 OAuth 使用 RS256 算法对令牌进行签名。我注意到当我传递具有空 'Header' 值且 JWT 令牌中没有 'Verify Signature' 部分的 JWT 令牌时,我仍然能够访问 API。
示例:
原始 JWT 令牌 - <header>.<payload>.<signature>
修改后的 JWT 令牌 - .<payload>
根据标准安全最佳实践,header 不应接受“none”算法,推荐的算法应为 HS256 或 RS256。但是在上面的例子中,APIs 被成功授权为 null header 值。我什至尝试在 header 中使用“none”算法,但 API 仍然被接受。
算法未在 API 中验证,是否存在安全问题?我可以知道攻击者如何利用这种情况来利用 API.
如果您正在更改 header 部分或签名部分(例如,不发送它们),并且 API 仍然接受令牌,那么这意味着 API 确实根本不验证签名。这意味着您可以将任何内容放入有效负载中,以 base64 编码,API 将接受它作为有效令牌。
这不是“安全问题”,只是实施错误。
我正在测试使用 OAuth 机制授权和访问 API 的 Web 应用程序。 OAuth 使用 RS256 算法对令牌进行签名。我注意到当我传递具有空 'Header' 值且 JWT 令牌中没有 'Verify Signature' 部分的 JWT 令牌时,我仍然能够访问 API。
示例:
原始 JWT 令牌 - <header>.<payload>.<signature>
修改后的 JWT 令牌 - .<payload>
根据标准安全最佳实践,header 不应接受“none”算法,推荐的算法应为 HS256 或 RS256。但是在上面的例子中,APIs 被成功授权为 null header 值。我什至尝试在 header 中使用“none”算法,但 API 仍然被接受。
算法未在 API 中验证,是否存在安全问题?我可以知道攻击者如何利用这种情况来利用 API.
如果您正在更改 header 部分或签名部分(例如,不发送它们),并且 API 仍然接受令牌,那么这意味着 API 确实根本不验证签名。这意味着您可以将任何内容放入有效负载中,以 base64 编码,API 将接受它作为有效令牌。
这不是“安全问题”,只是实施错误。