当前位置:  开发笔记 > 编程语言 > 正文

Facebook Connect帮助

如何解决《FacebookConnect帮助》经验,为你挑选了1个好方法。

根据Facebook API文档,大部分工作都是通过javascript处理的.

这意味着所有处理都已完成,然后前端检查用户是否连接到Facebook /授权.对?

我的问题是:

假设用户第一次访问我的网站.他点击"facebook connect".javascript将其验证为可信,并将其"重定向"到我服务器上的另一个页面.从那时起,我怎么知道用户实际上已经对我的网站进行了身份验证,因为一切都是在前端完成的?

我认为这是正确的,但是没有一些安全问题..:

- 用户点击登录后,Facebook会重定向到我网站上的页面.并且他们还创建了一个具有特定"Facebook ID"的cookie,该ID仅从该用户检索.我的后备人员将"读取"cookie并获取该ID ...然后将其与我的userID相关联.

如果这是正确的......那么它没有意义.如果人们窃取其他人的"Facebook ID"然后伪造cookie怎么办?然后我的后端看到cookie并认为它是真正的用户......?

我很困惑吗?如果我感到困惑,请帮我重组并告诉我它是怎么回事.



1> friedo..:

Facebook Connect使用聪明(或疯狂,取决于您的观点)黑客来实现您的网站与Facebook的身份验证系统之间的跨站点通信.

它的工作方式如下:

    您的站点包含一个非常简单的静态HTML文件,称为跨域通信通道.此文件xd_receiver.htm在FB文档中调用,但它可以命名为您喜欢的任何名称.

    您网站的登录页面包含对Facebook服务器上托管的Javascript库的引用.

    当用户通过"连接"按钮登录时,它会调用Facebook的JS API中的一个功能,弹出一个登录对话框.此登录框具有不可见iframe,其中加载了跨域通信文件.

    用户填写表单并提交表单,将表单发布到Facebook.

    Facebook检查登录.如果成功,它会将此信息传达给您的网站.这是跨域内容的来源:

      由于跨域安全策略,Facebook的登录窗口无法检查服务器上托管的文档的DOM树.但是登录窗口可以更新其中src的任何元素iframe,这用于与页面上托管的跨域通信文件进行通信.

      当跨域通信文件收到指示登录成功的通信时,它使用Javascript设置一些包含用户ID和会话的cookie.由于此文件存在于您的服务器上,因此这些cookie具有您的域名,您的后端可以接收它们.

    Facebook方向上的任何进一步沟通都可以通过插入另一个嵌套iframe在另一个中来实现iframe- 这个二级iframe生活在Facebook的服务器而不是你的服务器上.

Cookie是安全的(理论上),因为数据是使用Facebook在您注册开发人员计划时为您生成的密钥签名的.JS库使用您的公钥("API密钥")来验证cookie.

从理论上讲,Facebook的Javascript库会在您完成所有操作后自动处理这一切.在实践中,我发现它并不总是完全顺利.

有关使用iframes 的跨域通信机制的更详细说明,请参阅MSDN中的这篇文章.


更新其中
推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有