在客户端暴露Facebook应用令牌是不安全的吗?

时间:2015-01-14 09:29:12

标签: javascript facebook api security facebook-graph-api

我的网站制作JS Facebook Graph API请求,如

https://graph.facebook.com/v2.2?id=http://[URL]&format=json&access_token=[FB app id]|[FB app token]

获取每个帖子的Facebook股票数量。 app id是我的Facebook应用程序ID号,app标记是一个持久的访问令牌。

这两个值都暴露在客户端,虽然我的应用程序机密是私有的,我生成应用程序令牌服务器端。

这种做事方式不安全吗?我是否需要在服务器端移动这些请求并使我自己的端点报告共享计数?

Facebook的documentation有点令人困惑。它说:

  

同样,为了安全起见,应该永远不会将应用访问令牌硬编码到客户端代码中,这样做会让每个加载您网页或反编译您应用的用户完全访问您的应用秘密,从而能够修改您的应用程序。这意味着大多数情况下,您将仅在服务器到服务器调用中使用应用程序访问令牌。

     

请注意,因为此请求使用您的应用秘密,所以绝对不能   在客户端代码或可以反编译的应用程序二进制文件中。   重要的是,您的应用秘密永远不会与任何人共享。   因此,只应使用服务器端代码进行此API调用。

我没有对应用访问令牌进行硬编码,而且我隐藏了我的应用秘密。但我在客户端使用app令牌来服务器调用。我需要更改吗?

1 个答案:

答案 0 :(得分:0)

我认为文档(https://developers.facebook.com/docs/facebook-login/access-tokens#apptokens)非常清楚,你也引用了它们:

  

同样,为了安全起见,应用访问令牌永远不会被硬编码到客户端代码,这样做会让每个加载您网页或反编译您应用的用户完全访问您的应用秘密,因此能够修改您的应用程序。这意味着在大多数情况下,您将仅在服务器到服务器呼叫中使用应用访问权限。

我想知道你怎么说它不是硬编码的...如果是这样,app访问令牌来自哪里?