【问题标题】:Facebook Javascript SDK securityFacebook Javascript SDK 安全性
【发布时间】:2011-07-21 20:42:33
【问题描述】:

我正在使用 facebook javascript sdk 为网站提供用户登录功能。

我想做的只是获取登录用户的唯一 facebook id,然后使用该 id 将数据放入/从 mysql 数据库中获取/获取数据,以确定该用户可以使用哪些数据。

但是我真的觉得这不是很安全。虽然我没有存储任何敏感信息,例如信用卡详细信息等,但我显然更希望它尽可能安全。

我担心的是,有了 javascript,有人可能会伪造 facebook id 并随意提取他们想要的任何内容。

我知道 php sdk 会为这个问题提供一个可靠的解决方案,但我喜欢 javascript 主要是因为它易于使用并且我已经建立了它的基础(我承认,我很懒)。

所以,我的问题是:

  1. 这种设置会不会像我认为的那样不安全?

  2. 除了切换到 php sdk 之外,我还能做些什么来提高这种系统的安全性?

谢谢!

【问题讨论】:

  • 您会保存来自他们的 Facebook 的数据还是与您的网站相关的数据?你是通过 SSL 做的吗?
  • 我敢说将 javascript 用于与验证远程相关的任何事情都是不安全的 - 请记住,javascript 执行客户端,因此出于所有密集目的,恶意用户能够操纵您收到的任何输入,并且可以选择性地阻止 javascript基于运行的验证。
  • 我唯一要保存的是用户的 uid,用于识别要从中添加/提取数据的正确表和年龄。未使用 SSL。

标签: security facebook-javascript-sdk


【解决方案1】:

Facebook ID 很难编造(最多用户只会知道自己的 ID)。取决于您在数据库中存储的内容(除非您请求扩展权限,否则不会是用户无法自行获取的任何内容)

如果您担心用户试图从数据库中获取信息,请向每一行添加访问令牌或签名请求,然后我们将其和 facebook id 获取数据。这将大大提高安全性。

编辑

在少数情况下您会收到来自用户的签名请求:

* A signed_request is passed to Apps on Facebook.com when they are loaded into the Facebook environment
* A signed_request is passed to any app that has registered an Deauthorized Callback in the Developer App whenever a given user removes the app using the App Dashboard
* A signed_request is passed to apps that use the Registration Plugin whenever a user successfully registers with their app

仅当用户已接受权限时,签名请求才会包含用户 ID,并且如果用户进入应用程序并接受权限,则不会再次传递(这意味着签名请求将不包含 ID)。因此,保存访问令牌可能是一个更好的主意。这里有更多关于signed request

签名的请求也在 url (param = "signed_request") 中。我总是通过 c# 解析它,但我相信你至少可以通过 javascript 得到一个

【讨论】:

  • 已经阅读了一些内容,理想情况下,我想要的是来自 facebook 的加密字符串,其中包含用户 uid,然后我可以使用我的 fb 应用程序的密钥去阅读它。似乎签名的请求完全符合此描述,但是我不知道如何根据请求调用其中一个?理想情况下使用 javascript API。如果有人知道这是否可能,我很想知道。 fb 访问令牌是我可以根据请求找到的东西,但 uid 没有加密,只是它中间的一个字符串。
  • facebook ID 只有用户知道的第一句话是不正确的。网上有很多网站可以用来查找 ID,因此它们并不安全。您必须使用已签名的请求。
【解决方案2】:

使用 curl 很容易欺骗来源。我想 Facebook 有另一种机制来使这成为可能。如果您检查他们的代码,他们似乎会生成一个 iframe 并传递请求。如果我不得不猜测,他们已经将请求设置为仅来自 Facebook 域,并确保 iframe 只能嵌入到具有白名单域的页面中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 2012-12-20
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多