Ave*_*ris 6 state facebook csrf facebook-php-sdk
我正在使用PHP SDK getLoginUrl()函数,它可以完美地记录用户.一旦用户被重定向回我的页面,URL可以有两种形式,请参阅以下链接第3小节:http://开发人员.facebook.com /文档/认证/服务器端/
返回URL的一部分是?state = value.该值应该用于防止跨站点请求伪造:http://developers.facebook.com/docs/reference/dialogs/oauth/
虽然,使用getLoginUrl()方法我永远不能设置状态值,因为它不是参数之一:http://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/
那么如何利用状态值将用户登录到facebook并防止CSRF呢?
那么如何利用状态值让用户登录 facebook 并防止 CSRF?
这是由Facebook PHP SDK自动处理的。如果您要编写自己的Facebook API 调用,则需要state根据 FacebookOAuth文档手动提交(如果需要)。
当您使用 创建登录 url 时BaseFacebook::getLoginUrl(),该函数所做的第一件事是建立 CSRF 令牌状态1 ,该状态使用 PHP 的 core 和函数mt_rand()创建哈希,并将该值存储为会话变量。uniqid()md5()
当用户重定向回您的页面时,FBSDK 会检查提交的内容是否与会话中的值state匹配。state如果值确实匹配,则会从对象和会话中state清除,因此所有后续请求都将获得一个新变量。2FacebookgetLoginUrl()state
理论上,您可以在 FBSDK 中使用您自己的state值,方法是在构造 -object 之前将其写入会话变量,作为的构造函数,并检查会话中是否已存在。fb_<your_app_id>_stateFacebookBaseFacebookestablishCSRFTokenState()state
但这可能会带来不必要的复杂性。
BaseFacebook::establishCSRFTokenState() BaseFacebook::getCode()| 归档时间: |
|
| 查看次数: |
4300 次 |
| 最近记录: |