2013-11-01 148 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的鑰匙串中,在那裏受到保護。從不將密碼保存在配置文件(首選項文件)中。