【问题标题】:Facebook apps (iframes) and third party cookiesFacebook 应用程序 (iframe) 和第三方 cookie
【发布时间】:2011-12-15 18:26:24
【问题描述】:

我有一个 Rails 应用程序,它作为 iframe 在 Fabebook 内运行。我使用 Koala gem 进行 FB 通信(还有一些部分的 js SDK)和 Devise 作为身份验证基础。

一段时间以来,我发现应用程序在 iframe 中运行的问题存在一些问题。因此无法设置第三方 cookie。对于 IE,我使用 P3P 标头以某种方式缓解了问题。

但整个事情非常混乱。我在雪豹上。

例如:

  • 在 Safari 5.1.1 中,我设置了“阻止来自第三方和广告商的 cookie”。 该应用程序运行正常,可以毫无问题地使用。

  • 在 Chrome 5.0.874(最近的更新)中,“阻止设置第三方 cookie”选项已被选中,因此我的应用程序设置的两个主要 cookie(app cookie 和 fbs_xxxx cookie)无法设置,因此该应用程序无法运行,因为用户需要一直进行身份验证。

  • 在 Opera 11.52 中没有提及第三方 cookie,并且浏览器设置为“仅接受来自我访问的站点的 cookie”。我的应用在该设置下运行良好。

  • 使用 Firefox 7.0.1,我的应用程序可以运行,但我找不到任何处理 cookie 的设置。只是为了删除它们。

显然我的问题出在 Chrome 上,但同样的设置也适用于 Safari。所以我真的很困惑。

要求用户允许第三方 cookie 是解决此问题的唯一方法吗?

谢谢。

更新我目前的工作解决方案

我做了一些额外的研究和测试。我确实尝试使用 Rails 替代会话存储方法。默认情况下,它们存储在 cookie 中,但您可以将会话数据存储在内存、数据库等中。但这还不够,因为它仍然使用带有指向您选择的替代存储的指针的 cookie。

最后,我在 url 中设置了一些信息,让我可以找到当前登录用户的身份,获取用户并使用 Devises sign_in 方法手动登录该用户。我不太喜欢它,但现在我可以阻止第三方 cookie 并且仍然可以使用。稍后我将进行更改,而不是在那里获得真实信息,我将拥有一个 memcached 条目的密钥,我将从那里获取用户(以前设置),毕竟只有我的应用程序应该有权访问该 memcached 服务器。

谢谢。

【问题讨论】:

    标签: ruby-on-rails facebook cookies


    【解决方案1】:

    如果无法设置 cookie,则在 url 末尾设置会话 ID。

    【讨论】:

    • 您能举例说明一下吗,谢谢。
    【解决方案2】:

    Firefox 的 cookie 设置位置相当不直观。转到工具->选项->隐私,然后从下拉框中选择“使用自定义历史设置”,然后将出现cookie设置。但如果您将它们设置为默认值,它们将再次“消失”。

    第三方 cookie 的定义和处理存在很大的不一致(例如,在 Firefox 中,禁止不仅是设置 cookie,还包括读取它们)。出于这个原因,我会建议,如果可能的话,消除对 cookie 的任何依赖。告诉用户他们必须启用听起来不安全的东西已经够难的了(更不用说为每个浏览器提供所有不同的说明),而且随着浏览器继续收紧默认设置,情况只会变得更糟。不幸的是,所有标准库似乎都希望默认使用 cookie,因此这不是一件容易的事,但如果您刚刚开始编写应用程序,我认为尝试并立即找到一种无 cookie 的做事方式是值得的蝙蝠。

    【讨论】:

    • Floyd & Derek,感谢您的 cmets。在 url 中设置会话 id 是不安全的,Rails 根本不推荐。但是 Rails 提供了其他存储会话信息的地方。上次我尝试使用 Devise 时遇到问题,因为它需要一个 cookie,但我应该再试一次。是的,现在我在 FF 中找到了 cookie 设置,谢谢!那是隐藏得很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 2010-10-11
    • 2011-05-01
    • 2011-06-23
    • 2020-07-14
    • 2011-06-19
    • 2011-03-22
    相关资源
    最近更新 更多