我必须在我的android应用程序中存储一个合理的密码。如果需要,用户可以重新生成该密码短语。我的第一个想法是将它存储在一个受密码保护的密钥库文件中。但是这个密码,我应该把它存在哪里呢?我不在乎它是否对我所有的android应用程序都是一样的,但我不希望用户阅读它。
bjg7j2ky1#
第一个答案是不要这样做。你为什么要保存密码?你几乎永远不需要这样做。如果你这样做是为了验证你的服务器-不要。相反,使用基于令牌的系统,令牌由您的服务器生成并偶尔刷新。如果你这样做是为了与客户端进行身份验证-我会使用Android上内置的安全性。一般来说,如果你必须存储密码,不要保存它。捣碎,加盐,然后储存起来。这样,如果你的应用程序被入侵,他们就无法获得密码本身,而密码可以被重复使用。如果你有一个需要保护的密钥,那么你可以查看Android的密钥库系统:https://developer.android.com/training/articles/keystore
gojuced72#
当在Android二进制文件(或任何二进制文件)中存储任何敏感值时,请将其视为简单地使其更难获取。如果有人决心要得到密钥或密码或密码短语,那么他们就会得到它。你只是让别人更难得到它。您所能做的最好的事情就是对您正在尝试做的事情进行某种服务器端验证。这对你来说是最安全的方式,你也可以通过使它增加一个额外的保护层,以便只有你的应用程序可以获得该密码。如果你没有服务器,那么你最好在C++ lib文件中编译密码和其他信息,然后从Kotlin或Java中获取。如果用户可以更改密码,为什么不让用户从一开始就设置它,而不是将其存储在任何地方呢?您可以使用Firebase(基本上是免费的)进行某种身份验证,并在设备和应用程序安装中持久化用户设置的密码。
2条答案
按热度按时间bjg7j2ky1#
第一个答案是不要这样做。你为什么要保存密码?你几乎永远不需要这样做。
如果你这样做是为了验证你的服务器-不要。相反,使用基于令牌的系统,令牌由您的服务器生成并偶尔刷新。
如果你这样做是为了与客户端进行身份验证-我会使用Android上内置的安全性。
一般来说,如果你必须存储密码,不要保存它。捣碎,加盐,然后储存起来。这样,如果你的应用程序被入侵,他们就无法获得密码本身,而密码可以被重复使用。
如果你有一个需要保护的密钥,那么你可以查看Android的密钥库系统:https://developer.android.com/training/articles/keystore
gojuced72#
当在Android二进制文件(或任何二进制文件)中存储任何敏感值时,请将其视为简单地使其更难获取。如果有人决心要得到密钥或密码或密码短语,那么他们就会得到它。你只是让别人更难得到它。
您所能做的最好的事情就是对您正在尝试做的事情进行某种服务器端验证。这对你来说是最安全的方式,你也可以通过使它增加一个额外的保护层,以便只有你的应用程序可以获得该密码。如果你没有服务器,那么你最好在C++ lib文件中编译密码和其他信息,然后从Kotlin或Java中获取。
如果用户可以更改密码,为什么不让用户从一开始就设置它,而不是将其存储在任何地方呢?您可以使用Firebase(基本上是免费的)进行某种身份验证,并在设备和应用程序安装中持久化用户设置的密码。