W mojej aplikacji na iPhone znajdują się poufne dane, takie jak nazwa użytkownika, hasło i niektóre adresy URL do usługi internetowej. Który z nich jest lepszy NSUserdefaults lub pęku kluczy. Ktoś mówi, że NSUserdefaults jest niepewny. Dlaczego jest niepewny? i czy ktoś może dać plusy i minusy każdego z nich.NSUserDefaults lub keychain lepiej jest zapisać nazwę użytkownika i hasło w aplikacji na iPhone'a
Odpowiedz
NSUserDefaults jest dość łatwy w użyciu i przechowuje jedną wartość tylko na klucz. Ale najwyraźniej nie jest to bardzo bezpieczna metoda, ponieważ nie ma szyfrowania.
Ale Keychain jest bezpieczny, chociaż trochę trudno go zakodować. Możesz przekierować ten link, aby uzyskać dostęp do pęku kluczy.
http://log.scifihifi.com/post/55837387/simple-iphone-keychain-code
można również korzystać z tej biblioteki deviced przez Szymona
https://github.com/goosoftware/GSKeychain
Mam nadzieję, że to pomaga !!
Wszystko, co jest przechowywane w NSUserDefaults, można (względnie) łatwo otworzyć i odczytać, czy to na urządzeniu, czy w postaci (niezaszyfrowanej) kopii zapasowej do iCloud lub zsynchronizowanego komputera Mac.
Keychain, on the other hand, is meant for stuff like certificates and passwords. Połączyłem artykuł zatytułowany "Jak nie przechowywać haseł w iOS", który zawiera trochę więcej przydatnych szczegółów.
Brelok jest o wiele lepszym rozwiązaniem, ponieważ jest bezpieczniejszy, ale w każdym razie, gdybyś zapisał tego rodzaju informacje w NSUserDefaults, twoi użytkownicy nie poczuliby się inaczej. Gdyby ktoś zhakował swoje urządzenie, mógłby uzyskać informacje z Keychain, tak samo jak dostaną informacje z UserDefaults. Tak więc kwestia bezpieczeństwa to retoryka. W każdym razie dobrym stylem programowania jest zapisanie tych danych w pęku kluczy!
Polecam Ci używać Breloki. Za pomocą pęku kluczy możesz zapisać swoje hasło w postaci zaszyfrowanej. Zobacz przykład Apple'a GenericKeychain.
NSUserDefaults jest trochę mniej bezpieczny w porównaniu z Keychain. W NSUserDefaults można uzyskać dostęp do danych, jeśli określony klucz jest znany. Tak nie jest w Keychain.
Możesz również przekonwertować NSUserDefaults na pęku kluczy. Spójrz nahere.
Warto zauważyć, że dane z pęku kluczy zostaną utracone, nawet jeśli aplikacja zostanie usunięta, ale dane NSUserDefault znikną wraz z aplikacją (NSUserDefaults jest częścią obszaru izolowanego aplikacji, Keychain jest usługą niezależną od aplikacji).
* W danych NSUserDefaults można uzyskać do nich łatwy dostęp, jeśli określony klucz jest znany. Tak nie jest w Keychain *. Co przez to rozumiesz? – Honey