Как я могу защитить онлайн-API для своего приложения?

Я создаю приложение для Windows Phone и Android. Так что прямо сейчас я создаю webapi, который они оба могут использовать, но я хочу защитить его som, а не другие, которые могут использовать мои приложения. Как мне это сделать? Никто, кроме моих приложений, не получит доступ к этим API.

Я не хочу реализовывать OAuth.

Я имею два сценария, о которых я думаю:

First (I store username and hashed password on the client):

  • basic-auth через https/ssl, thats it.

Second (I store accesstoken on the client):

  • basic-auth через https/ssl для получения токена доступа.
  • , чтобы получить токен доступа, пользователь отправляет запрос для запроса, открывая токен, который проверяет, что и клиент, и сервер знают, что происходит с клиентами.
  • для каждого вызова API, который должен быть отправлен accesstoken для проверки доступа

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

Как это делается в реальном мире?

1
nl ja de

1 ответы

Вы можете использовать небольшую модификацию First :

  • сохранить имя пользователя и пароль на клиенте
  • basic-auth over https

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

Но ваши опасения по поводу второго подхода также применяются. Если кто-то перехватывает сообщение, он имеет ваши полномочия.

Более безопасное решение аутентификация HMAC (теперь мы говорим «реальный мир»).

  • пользователь имеет секретный ключ , который хранится на сервере и клиенте
  • каждый запрос получает канонизацию (преобразуется в отдельную строку, содержащую метод запроса, URI, параметры и временную метку)
  • канонизированный запрос получает хэширование с помощью HMAC с использованием секретного ключа, хэш и идентификатор пользователя передаются в заголовке HTTP Authorization
  • на сервере хэш генерируется с использованием того же алгоритма (с меткой времени из заголовка HTTP Date ) и сравнивается с отправленным хешем.
  • Если результаты равны, запрос аутентифицируется

Примером может служить API-интерфейс Amazon S3 REST - связанная документация также является хорошим примером того, как реализовать ее для вашего собственного API.

1
добавлено
Кибербезопасность АСУ ТП: RUSCADASEC Community
Кибербезопасность АСУ ТП: RUSCADASEC Community
1 389 участник(ов)

Группа открытого независимого сообщества специалистов по кибербезопасности АСУ ТП / RUSCADASEC для интерактивного обмена информацией по теме Подробнее: www.ruscadasec.ru Наш канал для основных новостей и материалов @RUSCADASECnews

secinfosec
secinfosec
697 участник(ов)

Эта группа про информационную безопасность. Целевая аудитория: пентестеры, ресерчеры, ибшники всех мастей. Реклама, криминал, политика и прочая чушь карается родовыми проклятьями. Митапы: https://www.youtube.com/channel/UCagEjp1FmxY9gsVxi6_d4SQ

Linux Security
Linux Security
652 участник(ов)

Данная группа принципиально про безопасность и в частности про безопасность Linux. Прочие темы просим обсуждать в профильных чатах.

Chat Security / ИБач чат
Chat Security / ИБач чат
601 участник(ов)

Чат канала @ibach Обсуждение всего, что касается информационной безопасности Правила: https://t.me/chat_security/65