在javascript中暴露facebook用户访问令牌有哪些安全风险?

时间:2012-01-25 15:25:05

标签: facebook security access-token

假设我的应用程序有一个访问令牌给某个Facebook用户。 将JS代码中的访问令牌暴露给访问我网站的其他用户是否存在安全风险?如果是这样,他们可以用它做什么?

4 个答案:

答案 0 :(得分:14)

您有

的风险
  1. Confused deputy - 您的代码授予可能故意滥用这些权限或代表更多恶意代码滥用这些权限的代码的权限。
  2. 通过code injection(XSS)盗窃 - 凭据可能会被通过XSS漏洞注入您网页的代码窃取,然后用于代表用户执行操作,可能会生成指示您是罪魁祸首的日志。
  3. 通过窃听窃取 - 如果浏览器与服务器之间的连接中存在非HTTPS内容,则具有读取数据包能力的窃听者可能会窃取凭据。
  4. 恶意软件盗窃 - 如果用户的计算机上运行了恶意软件,则将这些凭据发送到浏览器会将其暴露给该恶意软件。恶意软件可能必须读取浏览器进程拥有的内存或浏览器写入的缓存文件。

答案 1 :(得分:9)

Facebook访问令牌为您的应用提供与有权访问该令牌的任何人相同的权限。因此,如果您的应用获得了执行操作A,B和C的权限并获得了相应的令牌,则任何其他能够获取令牌的应用都将拥有与该用户相同的权限(直到令牌过期为止) )。

所以,是的,存在风险。您需要保护令牌不会访问任何与应用程序不具有相同Facebook用户权限的人/任何人。

答案 2 :(得分:3)

任何人都可以在任何地方使用该访问令牌来执行访问令牌有权执行的任何操作。这是什么让它变得强大,对吧?

因此,在javascript中公开access_token实际上取决于javascript的运行位置,以及访问令牌的网络类型。

如果事情已经过了https,那么你应该不用担心,如果运行javascript的设备是安全的(比如个人手机的浏览器带有屏幕锁定)。

如果设备是一个共享的互联网终端,即使使用https,每个人都使用相同的用户帐户,那么如果骗子在浏览器上通过历史文件窥探并拔出该访问令牌。糟糕的坏事。

如果通过http进行通信,那么全世界都可以看到它。糟糕的坏事。

因此,由于您没有向我们提供有关环境的任何信息,因此这是一个非常模糊的问题。所以我的底线不会那么模糊。 不要这样做!让Facebook的Javascript SDK为您处理access_token。

答案 3 :(得分:2)

  

披露安全令牌可能会使您的用户容易受到攻击   劈

我记得在根植的Android手机上运行的软件“FaceNiff”,它会嗅到facebook和其他网站的安全令牌,你可以登录任何与该WIFI相关联的用户帐号。

另一款Android软件存在安全漏洞,让黑客嗅到你的gmail日历安全令牌并获得完全访问权限。

阅读这篇文章http://www.techlicious.com/blog/android-security-flaw-could-expose-you-to-data-theft/