在安卓设备上安全地本地存储密钥或密码

8

我正在开发一款安卓应用程序,目前我的服务器用户名和密码已经以常量的形式写在代码中(这样并不是很安全)。我在网上做了一些研究,但是没有找到完全保护用户密码或者至少能防止黑客攻击的方法。请问有人可以帮助我如何在安卓本地安全存储密码吗?谢谢!


2
可能有帮助:https://dev59.com/AWUq5IYBdhLWcg3wV_Ii - Thilo
1
你也可以检查一下这个。https://dev59.com/9XI-5IYBdhLWcg3wTWVu#1925534 - stinepike
http://stackoverflow.com/a/30464898/1254184 - Ivan Kinash
1个回答

3
看起来你的问题实际上是“我能限制服务器只访问我的应用程序吗?”。这是不可能的。一旦一个应用程序或文件存在于客户端(例如用户设备)上,就没有确保防止该客户端访问该应用程序或文件中的任何内容的方法,无论是否经过您的授权。
如果设备可以读取它,那么设备就可以读取它 - 不管实际上是您的应用程序在读取,还是其他东西假装是应用程序。
你能做的最多的就是尝试混淆凭据,但这很不可能有用——那些可能有兴趣从你的应用程序中提取凭据的人,也很可能是那些有能力绕过这种混淆的人。
如果不了解你的用例,我实际上无法给出更具体的建议。对于远程API,通常会使用API密钥,但这需要用户创建帐户。对于无需账户的应用程序,你所想要的是根本不可能的。
我还应该注意到,“防止黑客”不是一个有意义的目标 - 这可能意味着很多事情。你需要阅读关于威胁建模如何工作的知识,确定你的“攻击者”是谁,他们的目标是什么,以及他们的能力是什么。只有这样,你才能试图找到对策。
编辑:我只想额外添加一个警告:任何告诉你混淆在这种情况下“有效”的人,都试图向你出售某些东西。不幸的是,他们通常在这种尝试中相当成功。混淆模型不能行得通并且无法起作用。

@Pranav 除了Sven的建议外,您还可以使用具有字符串加密功能的商业混淆器。即使您正在使用SSL固定技术,篡改应用程序并更改证书也不是问题。因此,良好的做法是保护应用程序的完整性(完整性控制/反篡改)并加密其有价值的数据。我建议使用我们的产品DexProtector来实现这一点。请注意,我与Licel(DexProtector的开发者)有关联。 - Ivan Kinash
@IvanKinash 混淆器就像蛇油一样,它们无法起作用。 - Sven Slootweg
@SvenSlootweg 对不起,但我无法同意你的观点。 - Ivan Kinash
@IvanKinash 当然你不能这样做。你正在为一家销售此类混淆器的公司工作。也许你没有仔细阅读我的原始帖子,以看到我对正是那个的警告? - Sven Slootweg
@IvanKinash 这完全是胡说八道。不,移动银行应用程序不应使用混淆技术,这只是安全剧场,并且无效。混淆技术将无法防止“克隆应用程序”(我认为您高估了人们对克隆反向工程软件的关注程度)。 - Sven Slootweg
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接