Feed发布的安全性

时间:2011-10-29 20:33:26

标签: facebook security facebook-javascript-sdk

使用JavaScript SDK,可以在用户同意的情况下发布帖子。既然它可以完全在客户端完成,如何防止某人代表我的应用程序发布某些内容,篡改“图片”,“链接”,“标题”和“描述”等字段?

为赏金编辑:

Bragging是任何游戏的重要组成部分,包括在线游戏。在我的网络游戏中,我希望用户能够在Facebook赢得时吹嘘自己,但我不希望他们能够伪造一些帖子并通过我的应用程序发送,这将允许他们吹嘘而不实际获胜。如果我实际允许他们这样做,他们可能只通过我的应用程序发布一些东西(我只能想象一下使用一些经过身份验证的服务器端API来确保这一点)。

Facebook的Feed Dialog允许开发人员提示用户是否想要在他们的墙上发布内容,我也可以使用它来发布用户的获奖故事。问题是该API完全是客户端的,可以通过Javascript SDK或伪造URL来使用。我能够通过填写URL中的字段来填写我的应用程序名称中的帖子,如下所示:

https://www.facebook.com/dialog/feed?
  app_id=123050457758183&
  link=https://developers.facebook.com/docs/reference/dialogs/&
  picture=http://fbrell.com/f8.jpg&
  name=Facebook%20Dialogs&
  caption=Reference%20Documentation&
  description=Using%20Dialogs%20to%20interact%20with%20users.&
  redirect_uri=http://www.example.com/response

问题在于我无法为现有应用程序(例如Robot Unicorn Attack : Evolution)提出此类请求。因此,1)我不知道如何伪造一个请求到这个应用程序,这仍然是可能的,没有安全性或2)有可能防止客户端利用Facebook的API,我不知道如何在我的应用程序上执行此操作。

所以,为了赏金,我会考虑一个正确的答案1)一些证据表明总是可以代表某个应用程序伪造一个帖子,并且我需要一种方法来发布我想要的任何内容代表Robot Unicorn Attack : Evolution,或2)一种阻止用户代表我的应用程序伪造Feed帖子的方法,以某种方式我不能再使用服务器端信息。

2 个答案:

答案 0 :(得分:2)

如果您想代表Robot Unicorn Attack:Evolution发布任何内容,请执行以下操作:

0)确保您已添加该应用。

1)使用Chrome,转到https://s.adultswim.com/games3/fb-game-files/robotunicornattackevolution-sec/index.html(通过检查画布页面上内容的iframe上方的表单标记的操作来找到此URL)

2)打开开发人员工具

3)在控制台中粘贴:

FB.ui({
    method: 'feed',
    name: 'There is no security',
    link: 'https://developers.facebook.com/docs/reference/dialogs/',
    picture: 'http://fbrell.com/f8.jpg',
    caption: 'I can post whatever i want',
    description: 'Dialogs provide a simple, consistent interface for applications to interface with users.'
  },
  function(response) {
    if (response && response.post_id) {
      alert('Post was published.');
    } else {
      alert('Post was not published.');
    }
  });

4)按Enter键,然后在页面上弹出对话框

答案 1 :(得分:0)

  

1)一些证明,总是可以代表伪造一个帖子   一些应用程序,并且我需要一种方式发布任何我   希望代表机器人独角兽攻击:进化,

你已经做到了。保持自我证明。因此证明了。

  

2)一种防止用户代表我伪造饲料帖子的方法   应用程序,在没有服务器端的情况下,我再也无法做到这一点   只有信息。

Feed帖子需要的是一个应用程序ID,它无法隐藏。因此,只要您有申请 - 任何人都可以代表其发布。 (据我说。)