Har*_*rei 23 facebook csrf facebook-graph-api oauth-2.0 facebook-php-sdk
我的服务器日志显示"CSRF状态令牌与提供的不匹配"错误,这似乎几乎每个用户都会发生.但是,用户是创建和/或验证的,我能够检索用户信息.我正在使用Apache的Linux服务器.我也在使用最新的Facebook PHP SDK v.3.1.1谁能告诉我为什么会这样,以及如何解决它?
在同一个处理程序中两次检查令牌时,Facebook SDK代码有一个错误.
我编辑了facebook.php像这样的getCode函数:
protected function getCode() {
if (!isset($_REQUEST['code']) || !isset($_REQUEST['state']) || $this->state === null) {
return false;
}
if ($this->state === $_REQUEST['state']) {
// CSRF state has done its job, so clear it
$this->state = null;
$this->clearPersistentData('state');
return $_REQUEST['code'];
}
self::errorLog('CSRF state token does not match one provided.');
return false;
}
Run Code Online (Sandbox Code Playgroud)
如果被调用两次,则更清楚并且不会声明无效令牌.
要清楚,该函数可以在同一个url处理程序上调用两次,例如:
$facebook->getUser();然后在同一个处理程序中,$facebook->getLogoutUrl()然后getCode()调用两次,从而导致无效的错误消息
嗯,我曾经遇到过这个问题,并且URL 中的state&参数有问题- 我的文件没有转发它们。code.htaccess
我猜你也有同样的问题。
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
29698 次 |
| 最近记录: |