2015-11-20 2 views
2

Я разрабатываю приложение (как часть команды) для андроида, взаимодействующего с сервером (веб-сервис asp.net) для синхронизации и обновления информации на стороне клиента.Является ли Captcha хорошим решением для андроидной аутентификации?

для предотвращения атаки на сервер мы используем SSL-соединение, а также для аутентификации пользователей с сообщением заголовка мыла содержит имя пользователя и пароль.

здесь сценарий для синхронизации:

  1. пользователи отправляют запрос веб-службы с заголовка содержит: имя пользователя, пароль, время запроса, а также (для предотвращения человека на середине атаки) хэш-код всех трех параметров (имя пользователя + пароль + время), как сообщение подписи
  2. веб-сервис, проверка:

    • это новое сообщение, проверив подпись сообщения хранится в сервере
    • Если это новое сообщение (и его не дублируется), то проверьте, что подпись истинна, хешируя все три параметра (имя пользователя + пароль + время)
    • затем проверьте срок годности: это сообщение новое (через 5 минут) для истекающий старые сообщения
    • Authenticate имя пользователя и пароль
    • Validate тип данных и длина параметров (в данном случае только время последней синхронизации устройства)
    • ответ на запрос

устройства получить ответ в виде XML-файл

вопрос:

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

поэтому мы создаем веб-обработчик Captcha на сервере и когда пользователи являются новыми, мы отправляем им изображение captcha, генерируемое их кодом устройства (это uid, сгенерированное устройством как-то вроде: https://www.server.com?appid=00000000-0000-0000-0000-000000000000), и когда, если пользователь отправляет правильные captcha к серверу мы добавляем нового пользователя в нашу базу данных (автоматическое имя пользователя и случайный пароль) и сохраняем для менеджера учетной записи android для будущего использования

, на ваш взгляд, это хороший подход для аутентификации и безопасности? Спасибо за советы

ответ

0

Https и способ, чтобы получить SESSIONID достаточно безопасности для большинства приложений, во всяком случае мое мнение:

Если вы не включаете в себя тайну в пределах беспорядочного переменного «люди в середине» может изменить параметры и подделать допустимый хеш.

Я бы рекомендовал метод регистрации. Он будет принимать информацию о приборе в качестве параметра, а также, если вы захотите.

Он собирается вернуть deviceId и deviceSecret. УстройствоSecret не должно передаваться снова, просто используется как часть хэшей.

Также рассмотрите возможность использования счетчика вместо времени. Это может помочь предотвратить повторные атаки, и это проще в целом.

+0

Благодарим вас за ответ. Может ли «человек посередине» изменять параметры даже при подключении ssl? – omidDev