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