Android 애플리케이션에서 사용할 사용자 이름과 비밀번호를 저장하려면 가장 좋은 방법은 무엇입니까? 환경 설정 화면을 통과합니까 (그러나 사용자가이를 놓치면 어떻게됩니까?) 대화 상자를 팝업하여 사용자에게 자격 증명을 요청합니까? 그렇다면 응용 프로그램의 상태를 유지해야합니다. 어떻게해야합니까?
Android 애플리케이션에서 사용할 사용자 이름과 비밀번호를 저장하려면 가장 좋은 방법은 무엇입니까? 환경 설정 화면을 통과합니까 (그러나 사용자가이를 놓치면 어떻게됩니까?) 대화 상자를 팝업하여 사용자에게 자격 증명을 요청합니까? 그렇다면 응용 프로그램의 상태를 유지해야합니다. 어떻게해야합니까?
답변:
내가 본 대부분의 Android 및 iPhone 앱은 초기 화면 또는 대화 상자를 사용하여 자격 증명을 요청합니다. 사용자가 자신의 이름 / 암호를 자주 다시 입력하는 것이 번거롭기 때문에 해당 정보를 저장하는 것이 유용성 관점에서 의미가 있습니다.
( Android dev guide ) 의 조언 은 다음과 같습니다.
일반적으로 사용자 자격 증명 요청 빈도를 최소화하여 피싱 공격을보다 눈에 띄게하고 성공 가능성을 낮추는 것이 좋습니다. 대신 인증 토큰을 사용하여 새로 고치십시오.
가능하면 사용자 이름과 비밀번호를 장치에 저장해서는 안됩니다. 대신, 사용자가 제공 한 사용자 이름과 비밀번호를 사용하여 초기 인증을 수행 한 다음 수명이 짧은 서비스 별 인증 토큰을 사용하십시오.
자격 증명을 저장하는 가장 좋은 방법 은 AccountManger를 사용하는 것 입니다. SampleSyncAdapter은 그것을 사용하는 방법에 대한 예제를 제공합니다.
어떤 이유로 든 이것이 옵션이 아닌 경우 환경 설정 메커니즘을 사용하여 자격 증명 유지로 돌아갈 수 있습니다 . 다른 응용 프로그램은 기본 설정에 액세스 할 수 없으므로 사용자 정보가 쉽게 노출되지 않습니다.
AccountManager
(로터리 방식으로 내 대답에 따라, 그리고 미구엘 @)와 누군가가 GSM 휴대 전화의 보류를 얻을, 그들은 저장된 자격 증명을 무효화으로, 계정에 액세스 할 수 있도록 당신의 SIM을 계속해야합니다 SIM이 변경 될 때
Android AccountManager를 사용해야합니다 . 이 시나리오를 위해 특별히 제작되었습니다. 약간 번거롭지 만 SIM 카드가 변경되면 로컬 자격 증명이 무효화되므로 누군가가 휴대 전화를 스 와이프하고 새로운 SIM을 던지면 자격 증명이 손상되지 않습니다.
또한 사용자는 장치에있는 모든 계정의 저장된 자격 증명을 한 곳에서 빠르고 쉽게 액세스하고 삭제할 수 있습니다.
@Miguel과 같은 SampleSyncAdapter는 저장된 계정 자격 증명을 사용하는 예입니다.
자격 증명을 보호하는 가장 좋은 방법은 root가 아닌 장치에서 쉽게 사용할 수없는 root.device 파일에 암호를 사용하여 암호를 저장하는 것입니다. 루트 된 장치의 경우 해커가 해독하는 키가 필요합니다. 그것.
다른 옵션은 Gmail과 같은 모든 인증을 수행하는 것입니다. Gmail 서버에서 첫 번째 인증 후. 당신은 당신의 암호의 경우에 사용되는 인증 토큰을 얻었다. 이 토큰은 일반 텍스트로 저장됩니다.이 토큰은 서버에서 비밀번호를 변경하는 경우 false 일 수 있습니다.
마지막 옵션 2 단계 인증을 활성화하고 장치의 장치 별 암호를 만드는 것이 좋습니다. 장치를 잃은 후에는 해당 장치를 비활성화하기 만하면됩니다.
SharedPreferences에서 비밀번호를 일반 텍스트로 저장하는 것이 우려되는 경우 Android 애플리케이션에 사용자 설정을 저장하는 가장 적합한 방법은 무엇입니까?를 살펴보십시오 .
SDK에서 SampleSyncAdapter 샘플을 볼 수도 있습니다. 도움이 될 수 있습니다.
안드로이드 개발자 의이 게시물을 살펴보십시오.이 게시물은 Android 앱에 저장된 데이터의 보안을 강화하는 데 도움이 될 수 있습니다.
새로운 (Android 6.0) 지문 하드웨어 및 API를 사용하면 이 github 샘플 애플리케이션 에서와 같이 할 수 있습니다 .
이들은 숨겨진 정보를 깰 수 있는 순서대로 순위가 매겨 집니다 .
일반 텍스트로 저장
대칭 키를 사용하여 암호화 된 저장
Android Keystore 사용
비대칭 키를 사용하여 암호화 된 저장
출처 : Android 앱에서 비밀번호를 저장하기 가장 좋은 곳은 어디입니까?
키 저장소 자체는 사용자 자신의 잠금 화면 핀 / 암호를 사용하여 암호화되므로 장치 화면이 잠기면 키 저장소를 사용할 수 없습니다. 애플리케이션 비밀에 액세스해야하는 백그라운드 서비스가있는 경우이 점을 명심하십시오.
http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html 의 정보 는 상당히 실용적이지만 "uses-hidden-android-apis"기반 접근 방식입니다. 자격 증명 / 암호를 장치에 로컬로 저장할 수 없을 때 고려해야 할 사항입니다.
또한 https://gist.github.com/kbsriram/5503519 에서 그 아이디어의 정리 요점을 만들었습니다 .