Какой лучший способ реализовать API REST для регистрации на iPhone / Android? - PullRequest
7 голосов
/ 05 февраля 2011

Я пишу бэкэнд-приложение с REST API для iPhone и Android. Это внутренний API.

На данный момент я пытаюсь реализовать API регистрации пользователей, чтобы пользователь мог зарегистрироваться из мобильного приложения.

Я пишу с использованием Django, а вместе с Django они поставляются с подделкой межсайтовых запросов для веб-запроса. Я должен отключить его для REST API, используя Django-поршень.

Так как я могу защитить свой API регистрации от спама? придушить? по слову? Какова лучшая практика для реализации API регистрации? в чем ловушка?

Было предложено загрузить веб-представление в мобильное приложение и создать форму для регистрации в Интернете, чтобы можно было реализовать CSRF. Это решение, но не опрятное, поскольку мне приходится создавать страницу дизайна для каждого мобильного устройства или общую страницу, которая может не подходить для всех устройств.

Много помощи приветствуется.

Cheers, Mickey

Ответы [ 2 ]

1 голос
/ 06 февраля 2011

Я согласен с тем, что использование OpenID-провайдера - отличный способ для достижения этой цели.Вы должны заглянуть в http://pypi.python.org/pypi/django-social-auth или аналогичные проекты.Дополнительным преимуществом является то, что вам не нужно сохранять учетные данные в вашей базе данных.Меньше данных для управления, меньше данных для потери.

Если вам определенно нужна классическая схема на основе имени пользователя / пароля и сопровождающая регистрация (может быть, наряду с такими вещами на основе OpenID, как сама SO), я бы пошел на удушение этого поршняобеспечивает.Лично я использую капчи только в крайнем случае, и делать это через интерфейс REST, вероятно, довольно раздражает.Вы запрашиваете капчу перед тем, как продолжить регистрацию?Как вы заметили, что этот пользователь завершил капчу (сеанс + куки, ...)?Вы не можете использовать reCAPTCHA или аналогичные сервисы без использования веб-просмотра (что сделало бы весь подход REST устаревшим IMO).

Я хотел бы вернуться с помощью WebView.Если вы сохраняете интерфейс простым и понятным, он не должен противоречить соглашениям на любой платформе смартфона.

0 голосов
/ 06 февраля 2011

Нет причин беспокоиться о CSRF для вашего REST API, отметьте этот раздел в документации, которая объясняет, почему.

Лучший способ предотвратить спам - это собрать пользовательские данные из проверенного источника, такого как провайдер OpenID, Facebook и т. Д. Если вы хотите сделать это вручную, то самый простой способ сделать это - взять django -регистрация и расширение одного из бэкэндов. Вы можете взять предоставленный простой бэкэнд и использовать пользовательскую форму с полем капчи. Этого должно быть достаточно, чтобы отсеять автоматические регистрации. Должно быть достаточно простым, чтобы подключить его к поршню .

EDIT:

Вы правы, я только что перечитал вопрос и заметил, что полностью проигнорировал тот факт, что вы уже упоминали, что разрабатываете свой REST API для удаленных пользователей Android / iPhone. Таким образом, ваш API открыт для общественности и принимает запросы, которые не исходят от вашего домена или от клиента браузера по этому вопросу.

Тогда я бы не стал изобретать велосипед в вашем случае, вам следует внедрить Аутентификацию с открытым API , поскольку она идеально подходит для ваших требований: знание того, что вы обмениваетесь информацией с реальным пользователем, не беспокоясь откуда запрос возник.

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