在 android 上将密钥或密码安全地存储在本地
Store a key or password securely locally on android
我正在制作一个 android 应用程序,目前,我的服务器用户名和密码在我的代码中写为常量(这不是很安全)。我已经在网上进行了研究,但我无法真正找到可以完全保护用户密码或至少防止黑客攻击的东西。谁能帮我解决如何在 android 上本地安全存储密码的问题?谢谢!
看来你的问题实际上是"can I restrict server access to my application only?"。这不可能。一旦应用程序或文件存在于客户端(例如用户设备)上,就没有万无一失的方法来阻止该客户端访问该应用程序或文件中的任何内容,无论是否有您的授权。
如果设备可以读取它,那么设备可以读取它 - 不管它实际上是您的应用程序在读取,还是其他东西假装 成为应用程序。
您最多只能尝试混淆凭据,但这不太可能有用 - 那些可能有兴趣从您的应用程序中提取凭据的人也可能是那些有能力绕过此类凭据的人混淆。
在不了解您的用例的情况下,我真的无法给您更具体的建议。对于远程 APIs,通常使用 API 密钥——但这需要用户创建一个帐户。对于无账户应用,你想要的根本不可能。
我还应该指出 "preventing hackers" 不是一个有意义的目标 - 这可能意味着 许多 事情。您需要了解威胁建模的工作原理,并准确确定您的 'attackers' 是谁、他们的目标是什么以及他们的能力是什么。只有这样你才能尝试找到解决方案。
编辑:只是想补充一句额外的警告:任何人告诉你混淆是 "effective" 对于这种情况,都是在试图向你推销一些东西。不幸的是,他们在这种尝试中通常相当成功。混淆模型不能并且不工作。
我正在制作一个 android 应用程序,目前,我的服务器用户名和密码在我的代码中写为常量(这不是很安全)。我已经在网上进行了研究,但我无法真正找到可以完全保护用户密码或至少防止黑客攻击的东西。谁能帮我解决如何在 android 上本地安全存储密码的问题?谢谢!
看来你的问题实际上是"can I restrict server access to my application only?"。这不可能。一旦应用程序或文件存在于客户端(例如用户设备)上,就没有万无一失的方法来阻止该客户端访问该应用程序或文件中的任何内容,无论是否有您的授权。
如果设备可以读取它,那么设备可以读取它 - 不管它实际上是您的应用程序在读取,还是其他东西假装 成为应用程序。
您最多只能尝试混淆凭据,但这不太可能有用 - 那些可能有兴趣从您的应用程序中提取凭据的人也可能是那些有能力绕过此类凭据的人混淆。
在不了解您的用例的情况下,我真的无法给您更具体的建议。对于远程 APIs,通常使用 API 密钥——但这需要用户创建一个帐户。对于无账户应用,你想要的根本不可能。
我还应该指出 "preventing hackers" 不是一个有意义的目标 - 这可能意味着 许多 事情。您需要了解威胁建模的工作原理,并准确确定您的 'attackers' 是谁、他们的目标是什么以及他们的能力是什么。只有这样你才能尝试找到解决方案。
编辑:只是想补充一句额外的警告:任何人告诉你混淆是 "effective" 对于这种情况,都是在试图向你推销一些东西。不幸的是,他们在这种尝试中通常相当成功。混淆模型不能并且不工作。