Повышение безопасности приложения Android с помощью API в Rails в отношении обработки паролей - PullRequest
0 голосов
/ 08 октября 2018

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

Сейчас приложение довольно маленькое, согласнов Google Play Store его установили менее 500 человек, но меня беспокоит то, что я понял, что парень, который разработал это приложение для Android, сохранил пароли пользователей в телефоне в виде простого текста с localStorage.setItem, а затем каждый разПользователь хочет войти в систему, восстановить пароль с помощью localStorage.getItem и отправить его в API.В Rails API пароль обрабатывается намного безопаснее, но он произвел аутентификацию с помощью запроса GET (честно говоря, он использовал GET для всего, редактирования ресурсов, создания ресурсов и т. Д.), И хотя он использовал HTTPS, API также могпринимать HTTP-запросы.

Я не эксперт по безопасности, но, очевидно, это довольно плохо ...

Что я могу сделать в краткосрочной перспективе, чтобы улучшить безопасность этого приложения?

  • На данный момент я создал API для приема только HTTPS-запросов.
  • Я планирую изменить запросы GET для POST, когда это будет необходимо.
  • Я также планирую сохранить хэш пароля, когда пользователь зарегистрируется, а затем использовать этот хэш, как если бы он был настоящим паролем.

Как я уже сказал, я не специалист по безопасности, но я не хочу делать все так плохо, как предыдущий разработчик, поэтому я хочу услышать больше мнений, что еще я могу сделать, чтобы повысить безопасность приложения в Rails и Android?Как я могу обрабатывать конфиденциальную информацию более осторожно?

Привет.

1 Ответ

0 голосов
/ 08 октября 2018

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

Как это должно быть сделано и как большинство веб-сайтов делают это, вы отправляете свое имя пользователя / пароль в API входа в систему иlogin api возвращает токен авторизации.Затем токен аутентификации используется для аутентификации всех запросов API.Преимущество этого заключается в том, что токен аутентификации может быть аннулирован сервером, и истекает сеанс, который блокирует доступ устройства к API до тех пор, пока он не войдет в систему снова.

Одной из популярных библиотек для этого является devise_token_auth , который обрабатывает все это для вас.

Но если ваше приложение не имеет возможности перечислить активные сеансы и сделать их недействительными, вы ничего не получите от этого.Опять же, отправка пароля через https на ваш сервер не является особенно небезопасной.Частное хранилище приложений не может быть доступно другим приложениям, и если устройство взломано, поэтому эта область небезопасна, вы все равно ничего не сможете сделать.

...