2013-11-01 146 views
1

我最近发现Android应用的数据库完全暴露。这就是说,我的配置是暴露的,我保存密码。Android安全问题

所以,现在我怀疑恢复Java代码。

String value = "example"; 

这可能是一个例子,我存储一个密码以通过引用webservice来传递。

人们可以通过某种软件(例如Is there a way to get the source code from an APK file?)获得所有的代码? (我试图按照步骤没有成功)

我读了约http://developer.android.com/tools/help/proguard.html,我怎么知道它已经在我的项目中实现?

当您创建一个Android项目时,项目根目录中自动生成的proguard.cfg文件为 。

我检查了我的根目录,我没有那个文件。

谢谢你们。

+2

你能更清楚地知道问题是什么吗?你问人们是否可以逆向工程你的应用程序,如何使用proguard,或者如何防止逆向工程? – Geobits

+0

是的,你可以反编译一个apk并获得对源代码的访问(虽然并不总是可靠的),但是proguard会混淆你的代码,但它仍然有可能弄清楚。在保存之前,您可以随时对其进行一些加密,然后在想要使用时再解密。 – tyczj

+0

有一个简单的规则。如果你关心它,不要把它放在手机上。在服务器上进行身份验证,不要存储密码。如果你把它存储在手机上,它是**不可能的**,以确保它的安全。你可以采取一些步骤来让它更难获得,但这只是一个问题:“努力打破它值得奖励吗?”如果答案是肯定的,那么不要把它放在电话上,因为有人会得到它。这就是为什么我在手机上进行远程擦除的原因。 – Simon

回答

0

您可以使用sqlcipher查看对本地数据库的加密。 Proguard混淆了代码,但不会隐藏您的密码(如果您将它们硬编码到任何地方),它不是用于安全性的工具[reference]。除非您使用某种TLS,否则您的所有网络流量都会受到攻击。

正如你现在描述你的应用程序,在你的应用程序中获取密码是微不足道的。

0

您可以使用char []而不是字符串数据类型来存储敏感值,如密码。如果某人因为值不存在而需要内存转储,这将使恢复变得困难字符串文字池如果使用了char []数据类型。

2

混淆并不保证您的代码不会被反汇编。获取您的apk的人仍然可以查看代码(尽管应用程序的流程将更加难以理解)。函数名称,变量和类名称已更改,但代码仍可查看。

密码和其他敏感信息应该保存在Android的钥匙串中,在那里受到保护。从不将密码保存在配置文件(首选项文件)中。