【问题标题】:Android SharedPreferences PasswordAndroid SharedPreferences 密码
【发布时间】:2014-01-31 06:13:40
【问题描述】:

我只是想问在 SharedPreferences 中存储密码(加密)是否是个好主意。 在Android中,您可以删除应用程序的sharedPredPref,然后密码就消失了,所以最好将其存储在sqlite之类的数据库中?在我的应用程序中,我将它保存在一个 sharedPref 中,所以当第一次启动一个活动时,他必须设置一个新密码。现在的问题是,其他人可以删除 sharedPreferences 然后他会再次要求设置新密码。

【问题讨论】:

  • 您是否比有人删除密码更关心密码的安全性
  • 对不起,我没有正确解释。我有一个活动,用户可以放一些笔记或其他东西。这些注释存储在 sqlite 中。该活动受密码保护。因此,如果用户第一次启动应用程序,他必须设置新密码才能访问活动。但是如果其他人想访问它,他只需要删除sharedPred,然后他会被要求重新设置新密码,而不知道旧密码。如果我将密码存储在数据库中,如果数据库被删除,那么所有笔记都将被删除,因此用户无法看到它们

标签: android encryption sharedpreferences


【解决方案1】:

在共享首选项中使用 MODE_PRIVATE,这样除了您的应用程序之外没有人可以访问它

SharedPreferences prefs= getSharedPreferences("yourpasspreference", MODE_PRIVATE);

最好以加密形式保存密码之类的东西。

为了防止从设置中清除数据,您可以在清单中使用它

<application android:label="MyApp" android:icon="@drawable/icon" 
           android:manageSpaceActivity=".ActivityOfMyChoice">

它将禁用设置中的清除数据按钮,将显示管理空间按钮,它会启动您定义的ActivityOfMyChoice Activity。

【讨论】:

    【解决方案2】:

    在 android 中,SharedPreferencesSQLite 在应用程序屏幕中按下 Clear data 按钮时都会被清除。所以没有区别!

    在这种情况下,用户将在他第一次启动应用程序时被注销。最终身份验证应始终发生在服务器端,而不是应用程序内部。

    【讨论】:

      【解决方案3】:

      如果您唯一担心的是有人可能会删除首选项 xml 文件,那么将它们存储在 SQLite 中不会有任何区别。因为当您清除应用程序的数据时,这两者都会被删除。

      【讨论】:

      • 从设置中清除应用程序数据时,sqlite数据库不会被删除。
      • 嗯,我在开发的时候总是用clear data来清db,不知道db会不会被删除,但是里面的数据会被100%擦除。
      • @androidBeginner 最好添加有问题的解释而不是评论。所以这将有助于其他人回答。
      • 在这种情况下,SQLite 和 SharedPrefs 对您来说都是错误的。附带说明一下,您不应该依赖这种类型的身份验证。手机是私人设备,您不应该再次在手机内部询问密码。这就像制作第二个锁屏。如果您需要远程登录,这是一个完全不同的场景。这是我会为你推荐的。
      • 清除数据后,SQLite数据库绝对会被删除。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 2019-07-03
      • 2012-03-05
      • 2011-12-14
      相关资源
      最近更新 更多