2011-10-29 40 views
2

使用JavaScript SDK,可以在用户同意的情况下发布帖子。由于它完全可以在客户端完成,所以如何防止某人代表我的应用程序在墙上发布内容,篡改“图片”,“链接”,“标题”和“说明”等字段?Feed发布的安全性

编辑的赏金:

吹牛是任何游戏,包括网络游戏的重要组成部分。在我的网页游戏中,我想让用户在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)阻止用户代表我的应用程序伪造供稿的方式,但我无法在没有服务器端信息的情况下执行此操作。

+0

的“一些证据证明它总是能够打造一个岗位” - 哟你已经证明它是 – zerkms

+0

“一种防止用户代表我的应用程序伪造提要帖子的方法” - 代表你的应用程序发布我们所需要的只是一个应用程序ID,它不能被定义隐藏。所以,只要你有一个应用程序 - 任何人都可以代表它发布 – zerkms

+0

那么,为什么我收到“无效请求”,如果我试图代表机器人独角兽攻击:进化?为什么我可以在我自己的游戏上做到这一点,但不能在流行的游戏上做到这一点? – lvella

回答

2

如果你想代表机器人独角兽攻击张贴任何:进化做到以下几点:

0)确保您已添加的应用程序。

1)使用Chrome,去https://s.adultswim.com/games3/fb-game-files/robotunicornattackevolution-sec/index.html(此URL位于通过检查画布页上的内容)

2)的IFRAME上面的表格标签的作用开放开发工具

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)回车,看到对话框弹出的页面

0

1)一些证据证明它总是可以伪造代 一些应用程序后,由我会需要一种方式来发布任何我 想代表机器人麒麟攻击:进化,

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

2)的方式,以防止用户伪造代表我 应用的饲料职位,在某种程度上我再也不能做到这一点,而无需服务器端 唯一信息。

提要帖子需要的是一个应用程序ID,它不能被隐藏。所以只要你有申请 - 任何人都可以代表它发布。 (根据我的。)