在Android应用程序中,我该在哪里安全存储数据库密码?

6

我有一个使用“sqlcipher库”加密的数据库,但现在我不知道在应用程序内部以正确的方式存储数据库密码的位置在哪里。 我认为SharedPreferences以PRIVATE_MODE模式存储是一个不错的选择,但我不确定。 有什么建议吗? 谢谢。


2
你不能从用户那里隐藏用户的数据(手机上的数据是他们的数据)。你可以尝试以几种方式混淆sqlcipher密码,但最终代码可以被反编译,任何人都可以获得密码。设备上的加密数据库只能帮助阻止一些偶然的旁观者,它无法阻止决心强烈的用户(或攻击者)。 - Charlie Collins
谢谢,所以如果我有一个已经root的设备..就没有可能以安全的方式存储密码了。 - Paolo
@Paolo 那是正确的。 - ObieMD5
3个回答

3
即使您将密码隐藏在应用程序内部,它仍然可以被反编译并找到。在具有 root 权限的设备上没有安全位置。您最好将数据库放在 Web 服务器上,并从服务器检索数据。这是保护数据库免受用户侵害的唯一方法(如果服务器设置和安全)。

嗨,谢谢。我已经在 Web 服务器上有一个数据库用于登录等功能,我的意图仅是以安全的方式保存敏感用户数据。但我知道我在安全方面有点夸张 :P - Paolo

3
我不知道在哪里可以以正确的方式存储数据库密码。所谓“正确的方式”是指将密码放在用户的头脑中,因为使用SQLCipher for Android的唯一原因是允许用户保护自己的数据。
您似乎试图将SQLCipher for Android用作DRM机制,这是行不通的。如果用户有足够的兴趣,他们可以获取到您在应用程序内部存储密码的任何地方。

2

这取决于你想要多么谨慎。如果设备没有被root,那么这个方法可以起作用。但是,如果设备已经被root了,那么在设备上就没有安全的位置了。


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