Facebook 手动登录流程中的状态参数有何用途?

Gau*_*tam 5 authentication facebook fbconnect facebook-graph-api oauth-2.0

在 fb 开发人员文档中的 oauth 身份验证 api - 在确认身份部分有以下注释

请注意,您还可以生成自己的状态参数并将其与登录请求一起使用以提供 CSRF 保护。

您能帮忙解释一下这背后的具体含义吗?我的意思是,即使我生成了一个状态参数,我将如何使用它?我是否将其编码为身份验证请求 URL 的一部分?即使我这样做了又能有什么目的呢?

Kev*_*nry 7

我是否将其编码为身份验证请求 URL 的一部分?

是的。该文档中还提到了它作为可选的 URL 编码参数。

您提供的任何值都将包含在 Facebook 返回的重定向响应的 URL 中。因此,这是您将一些值传递到服务器的一种方式。

即使我这样做了又能有什么目的呢?

由于该值只是在您的应用程序和服务器之间传递,因此您可以决定如何处理它(如果有的话)。提到的例子就是CSRF保护。通过包含唯一令牌作为状态参数,您可以确保对服务器的调用来自您的应用程序,而不是某些恶意站点。

(不过,我认为这并没有被广泛使用,因为验证授权代码或访问令牌的要求涉及大多数攻击向量。)