Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是Facebook';s客户端身份验证是否足够安全?_Facebook_Facebook Javascript Sdk - Fatal编程技术网

是Facebook';s客户端身份验证是否足够安全?

是Facebook';s客户端身份验证是否足够安全?,facebook,facebook-javascript-sdk,Facebook,Facebook Javascript Sdk,我正在考虑在facebook上登录我的网站。基于facebook的身份验证,用户将登录到该网站。并将继续使用它,直到他/她从该网站注销为止,无论facebook的登录状态如何。像大多数其他网站一样 在研究FB的客户端登录方法时,我注意到它基于从fbsr_{app_id}cookie接收的签名请求数据。FB希望在发出后10分钟内交换有效的短期访问令牌,以验证身份验证请求。(这10分钟似乎是FB最大限度地减少安全漏洞的努力。) 然而,在这10分钟内,其他人可以复制cookie,并且不费吹灰之力就可以

我正在考虑在facebook上登录我的网站。基于facebook的身份验证,用户将登录到该网站。并将继续使用它,直到他/她从该网站注销为止,无论facebook的登录状态如何。像大多数其他网站一样

在研究FB的客户端登录方法时,我注意到它基于从fbsr_{app_id}cookie接收的签名请求数据。FB希望在发出后10分钟内交换有效的短期访问令牌,以验证身份验证请求。(这10分钟似乎是FB最大限度地减少安全漏洞的努力。)

然而,在这10分钟内,其他人可以复制cookie,并且不费吹灰之力就可以成功尝试以受害者身份登录。这是我关心的问题,我想问以下问题:

  • 关于FB客户端身份验证的安全方面,我是否遗漏了一些东西,或者它确实有这个弱点

  • 在我的实现中,我是否可以做些什么来填补这一空白,或者转移到FB的服务器端身份验证是唯一的答案


  • 无论您使用服务器端流还是客户端流,如果使用正确,它们都是完全安全的。 正如您所提到的,在非基于ssl的站点上使用cookie选项确实是一个漏洞,但这是一个不受Facebook控制的漏洞

    如果你想完全避免这个攻击向量,不要使用Cookie选项,而是使用你的选择机制将前端的签名请求传递给后端,如通过SSL的XHR。要做到这一点,只需订阅相关事件-然后将使用已签名的请求作为响应的一部分来调用处理程序


    应始终在服务器上验证已签名的_请求,以避免任何篡改或虚假使用。签名的_请求还包含当时发布的_,应在最近10分钟内进行验证。(对于FB的用户id,请使用随附的用户id)。

    假设您使用的是HTTPS,您建议的是安全漏洞很难利用。攻击者基本上需要坐在用户的机器旁。但是,如果用户不注销,“攻击者”始终可以这样做。或者您是否认为有其他方式可以利用?您正在查看oauth2.0登录工作流,是吗?@Madbreaks是的,oauth2。并且目前没有使用HTTPS。你真的不需要在受害者的机器上。在工作场所,你总能设法得到饼干。10分钟和一些方便的工具是一个很好的时间,我想。(好吧,我不想在这里对安全性产生偏执,而是试图理解并选择更好的身份验证选项)。@Madbreaks如果用户不注销,“攻击者”不会获得fbsr{uid}cookie,如果“cookie”:“false”是为FB.init()设置的.Facebook使用OAuth授权访问身份数据以及签名的_请求(添加受众范围),因此是的,它是安全的。拥有10分钟的“代码”生命周期不是Facebook的弱点,也不是fb的控制者。但facebook肯定可以通过客户端登录方式提高安全性。你建议不要创建fbsr cookie,即始终使用cookie:false运行。没有对其他后端处理程序可用的\u请求进行签名(禁止登录)这将产生直接的影响,如增加服务器缓存项的超时时间,增加内存占用,或迫使用户频繁登录,增加用户的挫败感,并检测处理程序在后续页面访问中发布ajax帖子,增加与后端的透明交互。这种方法的成本大于解决登录弱点的收益。@SeanKinsley您关于处理签名请求的描述需要改进。我已经编辑了你的文章(最后一段)。