Dropbox API不再工作,CSRF不匹配



我使用Dropbox PHP SDK。一切都很好,突然间,身份验证过程不再起作用,而在该区域没有对代码进行更改。

我收到错误的" CSRF不合格"。

在URL中查看所有CSRF代币时,一切似乎都是正确的:

https://www.dropbox.com/1/oauth2/authorize?locale =&client_id = ReDActed& response_type = code = code = code&redirtect_uri =; state = l9yh1hf7pgioy7j7fsfega%3D%3D

https://myapp.herokuapp.com/dropbox/callback.php?state=l9yh1hf7pgioy7j7j7j7j7fsfega===&code = redacted

CSRF令牌匹配。日志显示它们不是:

[15-May-2015 12:09:44 UTC] /dropbox-auth-finish: CSRF mismatch: Expected 'sW2Zy4OD7YBijNHaeCtyjQ==', got 'L9yH1hf7pgiOY7j7fsFegA=='

我与Dropbox API支持进行了交谈。他们非常有帮助,并建议了很多事情:

此错误表明状态值返回您的重定向 URI与会话中存储的CSRF令牌不匹配。这 样本重定向URI的状态值与给定的状态值匹配 但是,要/授权URL,所以看起来这个问题是 在会话中存储的值。想到一些可能的事情 原因:

  • 您是否正在调用WebAuth。单个应用程序授权流程多次启动?如果是这样,您可能会存储CSRF令牌 一个,但正在浏览/授权的URL。
  • 您的会话存储无法正常工作?Dropbox PHP SDK使用您传递给WebAuth构造函数的CSRFTOKENSTORE。如果说 无法存储新的CSRF令牌,或者正在返回过时的值, 这可能会导致此不匹配。
  • 您是在应用程序的不同实例之间切换,因此访问不同的会话?

这是第一个理论上的问题。AJAX调用发生在背景中,该调用的登录检查还重定向到授权页面,从而创建了多个请求。一旦我禁用了这个问题,问题就消失了。

相关内容

  • 没有找到相关文章

最新更新