Facebook Javascript SDK安全问题?

str*_*thi 5 javascript security facebook facebook-graph-api facebook-javascript-sdk

我正在尝试将facebook auth嵌入到我的应用程序中.我最初的努力是登录浏览器并获取代码.我将此代码传递回我的api并获取访问令牌(与服务器保持一致)并通过我的服务器将我的所有请求路由到FB Api.因为我的客户端没有信息可以将FB作为我的应用程序进行授权调用,因此对我来说似乎完全安全.

然而,我一直在寻找FB Javascript SDK,以避免编写用于对话框打开和关闭的代码,并注意到它允许我getLoginStatus返回访问令牌.此外,我在他们的文档中查看了FB auth流程,并且他们说客户端 - 服务器混合流程可以做到服务器实际上将"长期访问令牌"返回给客户端并建议我使用HTTPS(公平).

现在这一切让我想到这是否是一个安全问题.作为一个潜在的黑客,我不能将一些javascript注入用户的网页,可以
a)制作getLoginStatus并获取访问令牌或
b)通过向我的api服务器发出请求获取访问令牌
并获取访问令牌然后使用它发布(假设用户授权我的应用程序这样做)到Facebook,好像我的应用程序正在做它?

我是一个安全新手,可能会在这里忽略一堆东西,但有人可以帮助我理解我所缺少的东西吗?

提前致谢!

PS:我知道我可以启用进一步的安全性,以确保每次我想要提出客户端无法做的请求时我都需要应用程序秘密,因为客户端永远不会提供该信息.

Bor*_*rov 6

我不是安全专家,只是一些想法:在你的问题中,你假设黑客以某种方式使用恶意软件将脚本注入用户浏览器的网页,然后该脚本与客户端的数据交互.

现在,如果我们想象这实际发生了并且邪恶的脚本可以完全访问网页数据,即使您在客户端上没有访问令牌,也会阻止恶意脚本向您的服务器发出请求并与之交互facebook通过你的服务器?

此外,如果用户打开Facebook本身并在那里进行授权,可以将恶意脚本注入到Facebook页面并代表用户执行任何操作,只需将请求发送到Facebook服务器即可.

通过这种方式,我认为如果您描述的情况发生了,那么存储访问令牌客户端是否真的无关紧要 - 无论如何,邪恶的脚本将能够完成它的工作.

实际上,如果您担心安全性 - 首先仔细检查所有与身份验证和安全性相关的facebook文档,并遵循他们的建议.第二 - 搜索常见的已知攻击媒介以及如何避免应用程序中的安全风险的建议.如果用户的计算机上已经有恶意软件可以改变浏览器的行为(比如在页面中注入其他脚本),那么你可能无法做很多事情.