NSUserDefaults или keychain лучше сохранить имя пользователя и пароль в приложении iPhone

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

Ответы

Ответ 1

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

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

http://log.scifihifi.com/post/55837387/simple-iphone-keychain-code

вы также можете использовать эту библиотеку, разработанную Саймоном

https://github.com/goosoftware/GSKeychain

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

Ответ 2

Может быть полезно заметить, что данные Keychain будут сохраняться, даже если ваше приложение будет удалено, но данные NSUserDefaults исчезнут с помощью приложения (NSUserDefaults является частью изолированной программной среды приложения, Keychain - независимой от приложения).

Ответ 3

Все, что хранится в NSUserDefaults, может быть (относительно) легко открываться и считываться, будь то на устройстве или в (не зашифрованной) резервной копии в iCloud или на Mac с синхронизацией.

Брелок, с другой стороны, предназначен для таких вещей, как сертификаты и пароли. Я связал статью под названием "Как не хранить пароли в iOS", которая также дает более полезную информацию.

Ответ 4

Keychain - лучшее решение, потому что оно более безопасно, но в любом случае, если вы сохраните эту информацию в NSUserDefaults, ваши пользователи не будут чувствовать себя иначе. Если кто-то взломает их устройство, они могут получить информацию от Keychain, так же как они получат информацию от UserDefaults. Таким образом, этот вопрос безопасности является риторикой. Но в любом случае хороший стиль программирования заключается в том, чтобы сохранить эти данные в Keychain!

Ответ 5

Я бы порекомендовал вам использовать Keychains. Используя Keychain, вы можете сохранить свой пароль в зашифрованном виде. Посмотрите пример Apple GenericKeychain.

NSUserDefaults немного менее безопасен по сравнению с Keychain. В NSUserDefaults данные могут легко получить доступ, если известен конкретный ключ. Это не относится к Keychain.

Вы также можете преобразовать NSUserDefaults в Keychains. Посмотрите здесь.