2017-01-10 5 views
0

Я создаю приложение, использующее Appcelerator, в котором пользователю необходимо ввести имя пользователя и пароль для входа. После входа в систему пользователь может включить TouchID для аутентификации. После выхода из системы пользователь может использовать TouchID для аутентификации и использовать приложение.Сохранение пароля на стороне клиента с помощью Appcelerator - подход к дизайну

Мой поток заключается в том, что после предоставления имени пользователя и пароля я сохраняю эти две данные в Keychain, используя следующий модуль iOS Keychain Module. Затем я использую ti.touchid для проверки подлинности отпечатка пальца, если успех, затем я извлекаю имя пользователя и пароль из брелка, а затем отправляю его по вызову веб-службы HTTPS и ввожу пользователя в приложение.

Мой запрос заключается в том, является ли это приемлемым подходом.

ответ

2

Я не разработчик iOS, ни какие-либо термины типа или связки ключей ничего не значат для меня вообще. Это для начала и для уменьшения количества голосов, которые я могу получить.

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

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

Если да, если вы все равно можете это сделать, то ваш подход недействителен.

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

Дополнительные рекомендации: использовать хеш на лету для хранения информации в брелках и убедиться, что перед тем, как восстановить его, вы должны проверить. Например, учетные данные пользователя, сохраненные в «домашнем wifi», могут быть проверены с помощью вашего отпечатка пальца только «дома» в той же сети Wi-Fi, где то же самое будет недействительным в другой сети.

т.е.) (keychainItem.x = у) верно, только если (что-то еще)

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

Я делаю это сам при программировании веб-приложений с сохраненными куки-файлами. Я, например, использую хранимый файл cookie ТОЛЬКО, ЕСЛИ он обращается к тому же самому IP-адресу, из которого он был сохранен. В любое время, когда IP-адрес изменяется, пользователю придется повторно аутентифицироваться, даже если значения cookie верны.

Надеюсь, это поможет.

+0

Мне нравится ваш подход Руслан. Некоторые указатели, о которых вы упомянули, хорошо иметь в виду при разработке такого подхода. Но я буду держать вопрос открытым, чтобы получить еще несколько мыслей, прежде чем отметить ответ. – Soumya

+0

Несомненно @Soumya, рад, что помогло и удачи с вашими усилиями. –