Facebook的手动登录流程中使用的状态参数是什么?

时间:2016-11-01 02:07:58

标签: facebook authentication facebook-graph-api oauth-2.0 fbconnect

在用于oauth身份验证API的fb开发人员文档中 - 在确认身份部分中它有this note

  

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

您能否帮助澄清一下这背后的意义究竟是什么?我的意思是即使我生成一个参数,我将如何使用状态参数?我是否将其编码为auth请求网址的一部分?即使我这样做,它的用途是什么?

2 个答案:

答案 0 :(得分:2)

我是否将其编码为auth请求网址的一部分?

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

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

即使我这样做,它的目的是什么?

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

(我不认为这被广泛使用,因为验证授权代码或访问令牌的要求会处理大多数攻击媒介。)

答案 1 :(得分:0)

这是因为FBRLH_state session未设置。

<?php 
session_start();
$_SESSION['FBRLH_state'] = $_GET['state'];
...