在用于oauth身份验证API的fb开发人员文档中 - 在确认身份部分中它有this note:
请注意,您还可以生成自己的状态参数,并将其与登录请求一起使用以提供CSRF保护。
您能否帮助澄清一下这背后的意义究竟是什么?我的意思是即使我生成一个参数,我将如何使用状态参数?我是否将其编码为auth请求网址的一部分?即使我这样做,它的用途是什么?
答案 0 :(得分:2)
我是否将其编码为auth请求网址的一部分?
是。它还在该文档中提到here,作为可选的URL编码参数。
您提供的任何值都将包含在Facebook返回的重定向响应的URL中。因此,您可以将一些价值传递到您的服务器。
即使我这样做,它的目的是什么?
由于价值只是在您的应用和服务器之间传递,因此您需要决定使用它做什么(如果有的话)。提到的例子是CSRF protection。通过包含唯一令牌作为状态参数,您可以确保对服务器的调用来自您的应用程序,而不是来自某个恶意站点。
(我不认为这被广泛使用,因为验证授权代码或访问令牌的要求会处理大多数攻击媒介。)
答案 1 :(得分:0)
这是因为FBRLH_state
session
未设置。
<?php
session_start();
$_SESSION['FBRLH_state'] = $_GET['state'];
...