代码之家  ›  专栏  ›  技术社区  ›  Jonah

OAuth“国家”是否减轻了任何真正危险的攻击?

  •  1
  • Jonah  · 技术社区  · 6 年前

    我用的是 OAuth Playground 为了更好地理解OpenID连接流,它要说的是验证 state

    用户被重定向回客户端,您将注意到URL中的一些附加查询参数:

    ?state=7ymOWcwttpCfDNcs&code=Tav2TPBjSNvR8aowA3oe

    由于攻击者有可能创建一个类似于此的GET请求,因此攻击者可以向您的应用程序提供垃圾授权码。您需要首先验证state参数是否与此用户的会话匹配,以便确保您启动了请求,并且只发送了一个用于客户端的授权代码。

    但实际上这并没有给攻击者带来太大的伤害:我们只是向auth服务器发出一些额外的http请求,如果在状态不匹配时立即拒绝服务器上的请求,我们就不需要发出这些请求。

    我的问题是:我的理解正确,还是缺少一个更为重要的攻击向量? 状态

    1 回复  |  直到 6 年前
        1
  •  2
  •   Kavindu Dodanduwa    6 年前

    我的问题是:我的理解正确吗

    为什么?

    definition ,

    状态 请求和回调之间的状态。

    状态有助于将授权请求与授权响应相关联,并防止跨站点请求伪造。假设您的客户机有一个接收响应的重定向URL。如果恶意方使用有效的访问令牌(当使用隐式流时)重定向到您的客户端,该怎么办。如果此访问令牌允许访问同一资源服务器中属于恶意方的有效资源怎么办。 OAuth 2.0 (RFC6749) give a solid example for this on bank account details .

    针对客户端重定向URI的CSRF攻击允许攻击者 导致客户端使用与 攻击者的受保护资源而不是受害者的(例如,save 受害者的银行账户信息被保存到受保护的资源中 由攻击者控制)。

    状态参数可防止此类攻击。此外,我欢迎你通过 RFC6819 - Threat Model and Security Considerations CSRF attack and usage of state 也。