JSON API предназначен для использования JavaScript - обрабатывать данные на стороне сервера или в браузере? - PullRequest
3 голосов
/ 25 июня 2010

Я создаю API, который будет использовать JSON.Основным использованием этого API будет AJAX в браузере, но он также может использоваться на стороне сервера пользовательскими сценариями PHP и т. Д.

Есть два способа сделать это (я думаю):

  1. Создайте API так, чтобы он использовал заголовки HTTP для установки cookie сеанса и извлекал все данные для поддержания состояния, используя COOKIE['session_id'] (псевдокод)
  2. Создайте API так, чтобы он возвращалsession_id и позволяет коду JavaScript пользователя устанавливать свой собственный файл cookie для session_id

В общем, я немного растерялся.Какой способ будет более безопасным (CSRF и т. Д.), Понятным для разработчиков, более легким для внесения изменений на стороне сервера, не сообщая пользователям, что они должны обновить свой код.

Кроме того, вы рекомендуете использовать спецификации JSON-RPCи если да, то один из этих методов лучше поддерживает JSON-RPC?

Любая помощь очень ценится.

Ответы [ 2 ]

4 голосов
/ 20 августа 2010

Я столкнулся с той же проблемой (как выполнять сеансы для инфраструктуры веб-служб на основе JSON-RPC). В итоге я использовал параметр URL для сеанса. Мои рассуждения:

  • Использование файлов cookie означает, что файлы cookie являются основополагающими для работы приложения. Я предпочитаю полностью отключить куки-файлы и при этом продолжать работу приложения.
  • Похоже, что заголовки HTTP могут вызвать проблемы при обращении к службе JSON-RPC из не веб-среды (например, из собственного приложения Windows).
  • Использование сессии в качестве первого аргумента для каждого метода - это то, что я считаю просто уродливым.

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

0 голосов
/ 16 августа 2010

Сеанс должен обрабатываться бэкэндом вашего приложения, которое должно создать сеанс и создать соответствующий файл cookie. С одной стороны, вы не будете иметь дело с обработкой сеансов в вызовах AJAX, поскольку браузер автоматически отправляет файлы cookie, которые он назначил для веб-сайта.

При использовании вашего API извне браузера существуют различные способы, которыми люди могли бы обрабатывать запросы. Cookie-файлы незаметно обрабатываются HTTP-библиотеками, такими как cURL.

Мой вопрос: зачем вам сеансы для API, вы используете его только для авторизации?

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