Безопасность размещения корма - PullRequest
2 голосов
/ 30 октября 2011

Используя JavaScript SDK, можно размещать посты с согласия пользователя.Поскольку это может быть сделано полностью на стороне клиента, как запретить кому-либо публиковать что-либо на своей стене от имени моего приложения, подделывая поля таких полей, как «изображение», «ссылка», «подпись» и «описание»?

Правка для награды:

Бахвальство является неотъемлемой частью любой игры, включая онлайн-игры.В моей веб-игре я хочу, чтобы пользователи могли хвастаться на Facebook, когда они выигрывают, но я не хочу, чтобы они могли подделывать некоторые посты и отправлять их через мое приложение, что позволило бы им хвастаться, не выигрывая.Они могут публиковать что-либо только через мое приложение, если я на самом деле позволю им это сделать (я могу только представить какой-то способ убедиться в этом, используя некоторый аутентифицированный серверный API).разработчики предлагали пользователям, если они хотят опубликовать что-то на своей стене, и я вполне мог бы использовать это, чтобы опубликовать историю побед пользователя.Проблема в том, что этот 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) возможно предотвратить использование API-интерфейса Facebook на стороне клиента, и я не знаю,как это сделать в моем заявлении.

Итак, ради награды я рассмотрю правильный ответ либо 1) какое-то доказательство того, что всегда можно подделать сообщение от имени какого-либо приложения, и этимМне бы понадобился способ публиковать все, что я хочу, от имени Атака робота-единорога: Evolution , или 2) способ запретить пользователям подделывать сообщения фида от имени моего приложения, так что я больше не могусделать это, не имея информации только на стороне сервера.

Ответы [ 2 ]

2 голосов
/ 22 марта 2012

Если вы хотите опубликовать что-либо от имени Robot Unicorn Attack: Evolution, сделайте следующее:

0) Убедитесь, что вы добавили приложение.

1) Используя Chrome, перейдите наhttps://s.adultswim.com/games3/fb-game-files/robotunicornattackevolution-sec/index.html (этот 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 и увидите всплывающее диалоговое окно на странице

0 голосов
/ 22 марта 2012

1) какое-то доказательство того, что всегда можно подделать сообщение от имени какого-либо приложения, и поэтому мне потребуется способ опубликовать все, что я хочу, от имени Robot Unicorn Attack: Evolution,

Вы уже сделали это.Держи самообладание.Следовательно, доказано.

2) способ запретить пользователям подделывать сообщения фида от имени моего приложения, таким образом я больше не могу это делать, не имея информации только на стороне сервера.

Подача сообщений - это идентификатор приложения, который нельзя скрыть.Так что, пока у вас есть заявка - любой может публиковать сообщения от ее имени.(по мне.)

...