Каковы некоторые жизнеспособные методы для объединения защиты CSRF с УСПОКОИТЕЛЬНЫМИ API?

Я интересуюсь слушанием, что приближается, люди взяли при создании УСПОКОИТЕЛЬНОГО (или квазиуспокоительный) API для их веб-приложений.

Практический пример:

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

Теперь скажите, что Вы хотите выставить веб-приложение как API (возможно, использующий JSON вместо HTML). Традиционно при публикации API, я полагал, что транзакции являются односторонними (значение, что потребитель API создает запрос на основе опубликованного API вместо первого запроса формы и затем создания запроса с помощью возвращенной формы).

"Односторонний" подход терпит неудачу когда вещи как фактор защиты CSRF в. Маркер защиты CSRF должен быть включен в любого, ОТПРАВЛЯЕТ/ПОМЕЩАЕТ/УДАЛЯЕТ отправленный потребителем API.

Я пытался думать, как лучше всего обратиться к этому. При запросе формы каждый раз, когда вызов API должен быть сделан, кажется очень неловким (особенно при контакте с асинхронными операциями), но все другие альтернативы, о которых я думал самостоятельно, кажется, побеждают защиту CSRF (или по крайней мере дыры перфорации в нем), который недопустим.

У какого-либо из Вас есть понимание этого?

Спасибо.

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

27
задан ʇsәɹoɈ 25 February 2011 в 22:29
поделиться

1 ответ

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

Несколько жестких замечаний:

  • использование дайджест-аутентификации или SSL
  • с ключом API для каждого приложения может быть немного накладным, поэтому большинство сайтов имеют один ключ API для всех сторонних приложений
  • OAuth Возможно, стоит проверить
2
ответ дан 28 November 2019 в 05:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: