Jeśli chcę przechowywać nazwę użytkownika i hasło, które mają być używane w aplikacji na Androida, jaki jest najlepszy sposób, aby to zrobić? Czy odbywa się to za pośrednictwem ekranu preferencji (ale co, jeśli użytkownik to przegapi?), Czy wyskakuje okno dialogowe i pyta użytkownika o poświadczenia? Jeśli tak, muszę zachować stan aplikacji. Jak bym to zrobił?
android
authentication
storage
credentials
Legenda
źródło
źródło
Odpowiedzi:
Większość aplikacji na Androida i iPhone'a, które widziałem, używa początkowego ekranu lub okna dialogowego, aby poprosić o poświadczenia. Myślę, że częste ponowne wprowadzanie nazwy / hasła jest uciążliwe dla użytkownika, więc przechowywanie tych informacji ma sens z punktu widzenia użyteczności.
Rada z ( przewodnika dla programistów Androida ):
Korzystanie z AccountManger to najlepsza opcja przechowywania poświadczeń. SampleSyncAdapter stanowi przykład, jak go używać.
Jeśli z jakiegoś powodu nie masz takiej możliwości, możesz wrócić do utrwalania poświadczeń, korzystając z mechanizmu Preferencji . Inne aplikacje nie będą miały dostępu do twoich preferencji, więc informacje użytkownika nie są łatwo ujawniane.
źródło
AccountManager
(zgodnie z moją odpowiedzią, a @ Miguel jest okrężną drogą) i ktoś zdobędzie twój telefon GSM, będzie musiał nadal używać twojej karty SIM, aby mieć dostęp do twoich kont, ponieważ spowoduje to unieważnienie przechowywanych poświadczeń kiedy zmienia się karta SIM.Należy użyć menedżera kont Androida . Jest przeznaczony specjalnie do tego scenariusza. Jest to trochę uciążliwe, ale jedną z rzeczy, które robi, jest unieważnienie lokalnych poświadczeń, jeśli karta SIM ulegnie zmianie, więc jeśli ktoś przesunie Twój telefon i wrzuci do niego nową kartę SIM, Twoje poświadczenia nie zostaną naruszone.
Daje to również użytkownikowi szybki i łatwy sposób uzyskiwania dostępu (i potencjalnego usuwania) przechowywanych poświadczeń dla dowolnego konta, które ma na urządzeniu, z jednego miejsca.
SampleSyncAdapter (jak wspomniany @Miguel) to przykład, który korzysta z przechowywanych poświadczeń konta.
źródło
Myślę, że najlepszym sposobem zabezpieczenia swoich danych uwierzytelniających jest najpierw pomyśleć o zapisaniu hasła z szyfrowaniem w pliku account.db, który nie byłby łatwo dostępny na urządzeniach nierootowanych, aw przypadku zrootowanego urządzenia haker musi potrzebować klucza do odszyfrowania to.
Inną opcją jest wykonanie całego uwierzytelniania, tak jak działa Gmail. po pierwszym uwierzytelnieniu na serwerze Gmail. masz token autoryzacji, który będzie używany w przypadku twojego hasła. ten token byłby przechowywany w postaci zwykłego tekstu. ten token może być fałszywy w przypadku zmiany hasła z serwera.
ostatnia opcja, którą polecam włączyć uwierzytelnianie dwuetapowe i utworzyć hasło specyficzne dla urządzenia dla swojego urządzenia. Po utracie urządzenia wystarczy je wyłączyć.
źródło
Zapoznaj się z Najbardziej odpowiednim sposobem przechowywania ustawień użytkownika w aplikacji na Androida, jeśli obawiasz się przechowywania haseł jako zwykłego tekstu w SharedPreferences.
źródło
Możesz również spojrzeć na przykład SampleSyncAdapter z zestawu SDK. To może ci pomóc.
źródło
Spójrz na ten post od programistów Androida, który może pomóc zwiększyć bezpieczeństwo danych przechowywanych w aplikacji na Androida.
Korzystanie z kryptografii do bezpiecznego przechowywania poświadczeń
źródło
Dzięki nowemu sprzętowi do obsługi linii papilarnych (Android 6.0) i interfejsowi API możesz to zrobić tak, jak w tej przykładowej aplikacji na githubie.
źródło
Są one uporządkowane według stopnia trudności, aby złamać ukryte informacje .
Przechowuj w postaci zwykłego tekstu
Przechowuj zaszyfrowane przy użyciu klucza symetrycznego
Korzystanie z Android Keystore
Przechowuj zaszyfrowane za pomocą kluczy asymetrycznych
źródło: gdzie jest najlepsze miejsce do przechowywania hasła w Twojej aplikacji na Androida
źródło: Proste używanie Android Keystore do przechowywania haseł i innych poufnych informacji
źródło
Informacje dostępne pod adresem http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html są dość pragmatyczne, ale podejście oparte na „using-hidden-android-apis”. Należy to wziąć pod uwagę, gdy naprawdę nie można obejść przechowywania danych uwierzytelniających / haseł lokalnie na urządzeniu.
Stworzyłem również uporządkowaną treść tego pomysłu na https://gist.github.com/kbsriram/5503519, która może być pomocna.
źródło