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

是否为OAuth 2.0请求生成状态参数后端或前端?

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

    我一直在网上搜索答案,但找不到清楚的答案。 因为我不太了解CSRF攻击 state OAuth2.0中的参数是为了避免这种攻击,我只是想知道 状态 需要在客户端生成参数,并将值放在本地存储或后端服务器上,然后将其存储到会话变量中,然后返回到客户端以创建URL。第一个解决方案似乎是最好的,但它安全吗?

    非常感谢您的帮助。

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

    更多关于 状态 参数可以从中找到 this answer .

    生成状态的位置和存储位置取决于应用程序的性质。无论客户机类型如何,客户机必须在授权代码响应中验证状态参数。

    对于不包含后端的单页应用程序,状态必须生成并存储在浏览器本身中。一旦响应到达,就必须比较状态值。

    对于本机应用程序(例如:移动应用程序),状态可以存储在应用程序内存中。它可以附加在授权请求中。当响应到来时,可以从内存中验证它。

    如果应用程序需要,状态可以存储在后端(例如-server)。这可以被认为更安全(与SPA相比),因为除了请求本身,没有人可以截取/获取该值。一旦发生重定向,后端就可以验证响应参数。此外,它还可以用于关联客户机会话。

    此外,窃取状态值只对试图进行CSRF攻击的一方有价值。但要注意生成无法猜测的状态值。进一步阅读以便存储- 3.6. "state" Parameter