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. Посмотрите здесь.