Intereting Posts
Получить строку из локали по умолчанию, используя строку в определенной локали Параметры макета загруженного представления игнорируются Вход в Android Twitter не работает с Fabric SDK – Обратный звонок не должен быть пустым Программно получить уровень API Android на устройстве? Не работает клавиатура Android При тестировании пользовательского интерфейса Android, как правильно подождать, пока пользовательский интерфейс будет готов? Android L – плавающая кнопка действия (FAB) Android In-App Purchase V3 Ошибка: требуется аутентификация ADB – соединение VirtualBox Можно ли получить код HTML из WebView Получить идентификатор пользователя из Служб Google Play? Как указать, какой сетевой интерфейс должен использовать эмулятор Android на моей машине разработки? Непонятное текущее учебное пособие по поиску местоположения в Android Android RecyclerView: измените файл макета LIST на GRID onOptionItemSelected Разница между getDefaultSharedPreferences и getSharedPreferences

Защищенный RESTful API, который может использоваться веб-приложениями (угловыми), iOS и Android

Я должен разработать план разработки RESTful API (Python / Flask), который может использоваться нашим будущим веб-приложением (Angularjs) и мобильными приложениями (iOS / Android).

Я занимаюсь исследованиями в течение трех дней и сталкиваюсь с несколькими сценариями. Использование HTTPS является одним из способов использования ниже перечисленных методов, чтобы сделать его более безопасным. Но https медленнее, что может означать, что нам нужны более быстрые и дорогие серверы.

  1. Использование Basic-Http-Auth и отправка имени пользователя / пароля в обычном (но https) канале для каждого запроса API.
  2. Использование Digest-Auth, которое является хешем пароля, и отслеживание будет автоматическим. Это будет работать для веб-приложения, однако я не смог подтвердить, поддерживает ли iPhone и Android это изначально. Если они это сделают, это может быть легким решением!
  3. Использование пользовательского HTTP-заголовка, в котором я бы отправил пользовательскую строку Auth в заголовке http при успешной аутентификации. Но тогда я должен убедиться, что я отправляю этот код auth для каждого запроса, который пользователь делает. Это делает его точно так же, как 1) с той разницей, что простые пароли не используются, и код auth может истекать без какого-либо риска. Также проблематично отслеживание кода auth, который больше не автоматизирован, как в 2)
  4. Использование OAuth – это вариант. Но его довольно сложно настроить. Если нет лучшего способа, возможно, это единственный способ?
  5. Защита API как Amazon S3, как описано в этой замечательной статье . Короче говоря, он говорит, что и сервер, и клиент будут знать секретный ключ, который они будут использовать для хэширования связи. Это будет похоже на рукопожатие гангстеров, что вы только доверяете мальчику доставки, если он знает рукопожатие гангста. Далее по комментариям кто-то спрашивает:

Как сохранить секретный ключ в безопасном приложении HTML5?

Вы совершенно правы; В чистом HTML5 (JS / CSS / HTML) приложении нет защиты ключа. Вы будете делать все коммуникации через HTTPS, и в этом случае вам не нужен ключ, поскольку вы можете безопасно идентифицировать клиента, используя стандартный API_KEY или какой-либо другой дружественный идентификатор без необходимости или сложности HMAC.

Другими словами, даже нет смысла использовать метод для веб-приложения на первом месте. И, честно говоря, я не понимаю, как это должно работать на мобильном устройстве. Пользователь загружает наше приложение и как я могу отправить закрытый ключ из iphone на сервер? В тот момент, когда я его перенесу, он будет скомпрометирован.

Чем больше я исследую, тем более нерешительным я получаю.

Я надеялся спросить некоторых профессионалов, которые сделали это раньше и могли поделиться своим опытом. Большое спасибо

Solutions Collecting From Web of "Защищенный RESTful API, который может использоваться веб-приложениями (угловыми), iOS и Android"

Https это медленнее, но не нет. Только квитирование происходит медленнее. Для нас самой большой проблемой является поддержка пары ключей на стороне сервера и мобильных телефонов. Мы также внедрили дайджест сообщений. Проблема в том, что сложно настроить версию php-android-ios должным образом. После этого (параметр должен изменить то, что предлагает Google с первых результатов только на стороне android) проблема будет связана с устройствами младшего класса: с большим использованием процессора, медленным процессом расшифровки шифрования, намного медленнее, чем https, Особенно когда вам нужно преобразовать строку 10kb (может занять несколько минут).

Если я не передам данные Nasa в ХАМАС, я бы пошел с очень простым шифрованием по простому HTTP: вроде бы инвертировал бит или так …

Пойдите с HTTPS. Это (незначительно) медленнее, но безопасность, которую вы получаете от него за относительно короткое время инвестиций (покупка сертификата SSL и просто изменение URL-адресов с http на https), стоит того. Без HTTPS вы рискуете получить доступ к сеансам ваших пользователей в незащищенных общедоступных сетях, что очень просто для кого-то сделать .