Android 如何存储服务器密码?

Android 如何存储服务器密码?,android,security,server,Android,Security,Server,我目前在我的程序中有一个硬编码的密码和用户名。这些凭据用于从远程服务器访问文件。我如何才能帮助阻止某人查看源代码并找出用户名和密码?(我目前使用Proguard来隐藏代码,但我是新手)在应用程序中有没有替代硬编码字符串的方法 我尝试过四处搜索,但几乎所有的问题都涉及到存储用户密码和姓名的问题。我在实际存储访问用户凭据的服务器的主密码时遇到了困难。使用散列来避免以纯文本形式存储凭据 使用SharedReferences将哈希凭证存储在本地内存中 阅读更多内容: 我建议对密码进行加密并将其存储在应用

我目前在我的程序中有一个硬编码的密码和用户名。这些凭据用于从远程服务器访问文件。我如何才能帮助阻止某人查看源代码并找出用户名和密码?(我目前使用Proguard来隐藏代码,但我是新手)在应用程序中有没有替代硬编码字符串的方法


我尝试过四处搜索,但几乎所有的问题都涉及到存储用户密码和姓名的问题。我在实际存储访问用户凭据的服务器的主密码时遇到了困难。

使用散列来避免以纯文本形式存储凭据
使用SharedReferences将哈希凭证存储在本地内存中

阅读更多内容:

我建议对密码进行加密并将其存储在应用程序中,当它连接到服务器解密并检查时,您甚至可以向其添加一个salt,或者您可以根据日期、ip、时间等因素保持密码动态变化。。。还有加密,我建议你对安卓应用程序的安全性做更多的研究,不能帮助你找到任何现成的解决方案,因为我不知道。你的APK中的任何东西都是不安全的。这是无法改变的。任何人都可以轻松地查看您的源代码,并获得APK中包含的任何硬编码常量或资源。诀窍是忘记所有这些,停止尝试使您的APK更安全。将APK编码为开源,它不能包含任何您不希望其他人拥有的敏感信息。有些身份验证方法不要求您在应用程序中存储服务器凭据,例如。@bakriawad这不起作用。您不能在APK中保守任何秘密或安全。不管你做什么。任何潜在的攻击者都可以查看应用程序的源代码,然后复制应用程序用于解密/加密密码的过程。任何人只要有足够的知识来反编译你的APK并查找密码,就可以在一次心跳中解决所有问题。可能是@XaverKapeller的副本我想他可以将它们存储在一个文件中,而不是源代码中,应用程序只读取加密的数据并按原样发送。。但是一把钥匙长时间保持静止是不好的。。因此,它仍然不是很安全,但比在不起作用的来源中提供它更安全。您不能在APK中保守任何秘密或安全。不管你做什么。任何潜在的攻击者都可以查看应用程序的源代码,然后复制应用程序用于解密/加密密码的过程。任何人只要知道如何反编译您的APK并查找密码,就可以在一瞬间搞清所有这些。@XaverKapeller我没有说过任何关于该解决方案的事情,它将适用于整个宇宙。我只说保留散列密码比保留纯文本密码要好,因为如果有人将源代码反编译,则不足以获取凭据。如何不足以获取凭据?首先,散列是一个单向过程。如果没有暴力,密码永远无法从哈希中恢复。因此,如果你在应用程序中散列密码,应用程序将无法再次恢复密码以使用它登录。如果您将散列密码发送到服务器,那么首先对其进行散列将毫无意义。我认为您指的是在存储密码时对密码进行加密/解密,但这并没有说明什么。因为任何人都可以对应用程序进行反编译并复制用于解密的过程。无论你在APK中做什么来确保安全都是毫无意义的。因为APK中的所有东西在设计上都是不安全的。如果你真的想保证某些东西的安全,你必须把它存储在服务器上。您必须使用类似OAuth的身份验证方法,该方法不要求客户端具有任何凭据。因为一旦你在等式中引入凭证,你就必须在APK中的某个地方以某种形式硬编码凭证,正如我在上面解释的那样,这是不安全的。散列主要用于服务器,因此服务器不需要以纯文本形式存储所有用户的密码。因此,在服务器出现漏洞的情况下,攻击者只会得到无用的哈希值,因为它们无法用于登录。登录服务器时,从用户处接收密码,对其进行散列,并将其与记录上的散列进行比较。如果它们匹配,则使用正确的密码。这本质上是一个技巧,允许服务器在不知道密码是什么的情况下确认密码是否正确。