FaceBook使用PHP SDK登录问题 Cross-site request forgery validation failed. Required param “state” missing from persistent data

作者: hsf 分类: PHP 发布时间: 2018-01-05

问题描述

使用Facebook官网php登录代码进行登录,返回如下错误:

Facebook SDK returned an error: Cross-site request forgery validation failed. Required param “state” missing from persistent data.

代码来源:https://developers.facebook.com/docs/php/howto/example_facebook_login

问题分析

网上搜索该问题,基本确定是由于CSRF机制导致的,什么是CSRF,摘一段百科上的解释:

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

解决方案

在Facebook回调中,增加一段代码即可,修改后的回调代码如下:

新问题

这样改完之后,访问回调出现了问题,500 (Internal Server Error)

这个问题没搞明白啥原因


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注