我正在尝试将facebook auth嵌入到我的应用程序中。 我最初的努力是登录浏览器并获取代码。我将此代码传递回我的api并获取访问令牌(与服务器保持一致)并通过我的服务器将我的所有请求路由到FB Api。因为我的客户没有任何信息可以将FB作为我的应用程序进行授权调用,所以对我来说是完全安全的。
但是我一直在查看FB Javascript SDK以避免编写用于打开和关闭对话框的代码,并注意到它允许我getLoginStatus
并返回访问令牌。此外,我在他们的文档中查看了FB auth流程,并且他们说客户端 - 服务器混合流程可以在服务器实际提供的地方进行操作"长期访问令牌"回到客户端并建议我使用HTTPS(公平)。
现在所有这些让我想到这是否是一个安全问题。作为一个潜在的黑客,我不能将一些javascript注入到用户的网页中,该网页可以是a)制作getLoginStatus
并获取访问令牌或b)通过向我的api服务器发出请求并获取访问令牌来获取访问令牌,然后使用它来发布(假设用户授权我的应用程序这样做)到Facebook,好像我的应用程序正在这样做?
我是一名安全新手,可能会在这里忽略一些东西,但是有人可以帮我理解我错过的东西吗?
提前致谢!
PS:我知道我可以启用进一步的安全性,以确保每次我想提出客户无法做出的请求时都需要应用程序保密,因为客户端永远不会提供该信息。< / p>
答案 0 :(得分:6)
我不是安全专家,只是一些想法:在你的问题中,你假设黑客以某种方式使用恶意软件将脚本注入用户浏览器的网页,然后该脚本与客户端的数据交互
现在,如果我们想象这实际发生了并且邪恶的脚本可以完全访问网页数据,即使您没有在客户端上拥有访问令牌,也会阻止恶意脚本向您的服务器并通过您的服务器与Facebook进行交互?
此外,如果用户打开Facebook本身并在那里进行授权,可以将恶意脚本注入到Facebook页面并代表用户执行任何操作,只需将请求发送到Facebook服务器。
通过这种方式,我认为如果您描述的情况发生了,那么存储访问令牌客户端是否真的无关紧要 - 无论如何,邪恶的脚本都能够完成它的工作。
实际上,如果您担心安全性 - 首先仔细检查所有与身份验证和安全性相关的facebook文档,并遵循他们的建议。第二 - 搜索常见的已知攻击媒介以及如何避免应用程序中的安全风险的建议。 如果用户的计算机上已经存在可以改变浏览器行为的恶意软件(比如将其他脚本注入页面),那么您可能无法做太多事情。
答案 1 :(得分:4)
如果您的Facebook应用程序设置上的有效重定向URI等效于您的网站网址,则只能获取访问令牌。
另外,它需要权限才能使用facebook access_token发布。
查看API调用