API безопасного отдыха для запуска пользовательских «приложений» в iframe - PullRequest
1 голос
/ 04 апреля 2010

Я хочу позволить пользователям создавать «приложения» (например, приложения Facebook) для моего сайта, и я пытаюсь найти лучший способ сделать его безопасным.

  1. У меня есть REST API
  2. я хочу запускать пользовательские приложения в iframe на моем собственном сайте (не такой безопасный язык разметки, как FBML)

Сначала я смотрел на oAuth, но это кажется излишним для моего решения. «Приложения» не нужно запускать на внешних сайтах, в настольных приложениях или чем-либо еще. Пользователь будет оставаться на моем сайте все время, но пользователь увидит "приложение" через iframe.

Поэтому, когда я вызываю приложение в первый раз через iframe, я могу передать ему некоторые переменные, чтобы он знал, кто вошел в систему и использует его на моем сайте. Затем он может использовать этот сеанс пользователя в своих собственных вызовах API для настройки отображения.

Если вызов передается в открытом виде, я не хочу, чтобы кто-то мог перехватить сеанс и выдать себя за пользователя.

Кто-нибудь знает хороший способ сделать это или хорошо написать об этом? Спасибо!

Ответы [ 2 ]

1 голос
/ 07 декабря 2010

Для современных браузеров используйте интерфейс обмена сообщениями между окнами, предоставляемый HTML 5 https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

В старых браузерах эмулируйте описанный выше интерфейс обмена сообщениями, создав третий IFrame в том же домене, что и ваше приложение, под вторым внешним IFrame. Затем вы можете иметь двунаправленный обмен сообщениями от 2-го до 3-го и от 1-го до 2-го путем изменения фрагмента части URL. 3-й и 1-й IFrames могут общаться в двух направлениях в javascript, потому что вы размещаете их в одном домене.

Вы должны иметь возможность обернуть оба вышеупомянутых метода в один скрипт и, возможно, получить один из этих слоев обмена сообщениями, чтобы сэкономить ваше время: http: //json-rpc.org/wiki/implementations

0 голосов
/ 04 апреля 2010

Если у вас есть REST API, вам не нужен iframe, фактически, iframes считаются очень плохой практикой в ​​современных веб-приложениях. Iframe будет полезен, если у вас есть контент на внешнем сайте, с которым нелегко манипулировать с помощью JavaScript на стороне клиента или с вашим приложением на стороне сервера. Это содержимое обычно в формате HTML-документа.

Вы уже заявили, что у вас есть REST API, поэтому вы, вероятно, можете манипулировать данными, возвращаемыми ресурсом, любым удобным для вас способом. Например, если ресурс отвечает на запросы JSON или XML, вы можете отформатировать и упорядочить эти данные с помощью Javascript из клиента (веб-браузера) или использовать веб-инфраструктуру для сбора данных из REST API и манипулирования ими / их организации, сделать результат доступным для вашего приложения.

Чтобы защитить данные при их передаче между клиентом и сервером, вы можете предоставить токен API (для этого используется множество сайтов, например, Github, Lighthouse и т. Д.) Для каждого пользователя из службы. поставщика и требуют, чтобы пользователи в вашем приложении предоставили свой API-токен. Маркер может быть передан в заголовках HTTP поставщику услуг REST, отделяющего токен от данных запроса и ответа. HTTPS (SSL) является обязательным для этого типа трафика, чтобы предотвратить прослушивание.

Дайте мне знать, если это слишком общее, я мог бы привести вам несколько конкретных примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...