我目前正在设计一个具有初始登录页面的应用程序。我提供了记住我的功能,并在共享首选项中存储了用户名和密码值。我在下面说明了我的示例代码。
SharedPreferences preferences = getApplicationContext().getSharedPreferences("MyAppSettings",Context.MODE_PRIVATE);
SharedPreferences.Editor edit = preferences.edit();
edit.putString("username",username);
edit.putString("password",password);
edit.commit();
信息: 假设用户名和密码是由用户填写的字符串变量
每当用户设置复选框时,请记住我,我将这些变量存储在共享首选项中。
我想知道这种方式安全可靠吗?
我的意思是可以从应用程序外部访问这些变量吗?
另外,我是否必须加密用户的密码并存储在共享首选项中?
提前致谢,
答案 0 :(得分:3)
我的意思是可以从应用程序外部访问这些变量吗?
拥有root设备的任何人都可以查看您的SharedPreferences。它只是存储在设备上的XML文件。
另外,我是否必须加密用户的密码并存储在共享首选项中?
这样做会更安全,是的。同时加密用户名。
答案 1 :(得分:3)
尽管Raghav Sood的回答确实正确回答了您的问题,但我认为您的应用设计方法在哲学上是错误的。
现代实践规定您不应在应用中存储用户名和密码。相反,登录过程应该生成一个oauth令牌,然后您的应用可以加密并记住将来访问Web服务器。
要获得关于oauth令牌的一般性阅读,您可以查看其上的维基百科文章http://en.wikipedia.org/wiki/OAuth,例如,twitter将此方法用于与其相关联的应用https://dev.twitter.com/docs/auth/oauth/faq
答案 2 :(得分:0)