通过第三方应用程序窃取访问令牌

时间:2018-01-15 16:25:35

标签: security oauth url-redirection

假设我们有一个网站(example.com),在此网站上创建帐户后,您可以访问your-domain.example.com登录到您的帐户。现在,登录my-domain.example.com后,我要求连接到我的社交帐户。网站创建的request_token链接如下所示:

https/://www.social-website.com/dialog/oauth?client_id=appid&redirect_uri=https/://mydomain.example.com

现在,他们将redirect_uri配置为接受anything.example.com

之类的内容

因此,如果攻击者将redirect_uri设置为attacker.example.com并将链接发送给受害者。如果受害者已经被授权应用程序,则他将被自动重定向到具有访问令牌的attacker.example.com。如果不是,他将首先被要求授权该应用程序。

之后攻击者将能够管理受害者的社交帐户。这是社交网站的安全问题吗?

2 个答案:

答案 0 :(得分:0)

如果这是真正的带有JWT的OAuth,那么可以使用constructor(public navCtrl: NavController, private nativeStorage : NativeStorage) { this.nativeStorage.getItem("userLogin").then((data)=>{ this.userImg = data.picture; this.userName = data.name; }).catch((c)=>console.log(c)); this.nativeStorage.getItem("userProfile").then((data)=>{ this.profileType = data.userProfileType; console.log("Check 1",this.profileType); this.setRadioButton(); // HERE, this is what you want. }).catch((c)=>console.log(c)); } 来加密/解密令牌。对于攻击者,除非加密密钥也被盗,否则jwt是无用的,攻击者无法对客户端ID做很多事情。

答案 1 :(得分:0)

这可以通过OAuth 2.0实现,但为了缓解这种情况,强烈建议在可能的情况下注册/列入重定向URI白名单并使用机密客户端(即具有客户端密钥的客户端)。请参阅:https://tools.ietf.org/html/rfc6749#section-10.6

  

使用授权代码授予请求授权时   类型,客户端可以通过" redirect_uri"指定重定向URI。   参数。如果攻击者可以操纵
的值   重定向URI,它可以导致授权服务器重定向
  资源所有者user-agent到一个受控制的URI   攻击者使用授权码。

     

...

     

为了防止这样的   攻击时,授权服务器务必确保重定向   用于获取授权代码的URI与   交换授权代码时提供的重定向URI   访问令牌。授权服务器必须要求公开   客户和应该要求机密客户注册他们的   重定向URI。如果请求中提供了重定向URI,   授权服务器必须根据已注册的内容进行验证   值。