2011-05-27 82 views
1

我希望能夠使用HTTPS和JSON將我的Android應用程序中的數據安全地發送到我的服務器。Android + JSON防止反編譯?

有了HTTPS,我可以防止嗅探,但不會對反編譯,所以我也會使用Proguard來混淆。

我的問題是JSON是發送數據的純文本方法,熟練的反編譯器將能夠計算出正在發送和接收的內容。那麼發送這些數據的更好方式是什麼 - 如果我假設某些時候有人會反編譯APK或JAR(取決於我如何啓動程序)。

我可以混淆JSON

"x":{"xx":12345678} 

但同樣我認爲這將只是一個時間問題有人工作的是我試圖發送一個時間碼等

回答

1

那麼......你不能。抱歉。如果你能想出來,音樂和電影業會讓你成爲英雄。

+0

哈哈,好的,所以不是應用程序我需要設法在服務器端做到這一點 – Matt 2011-05-27 15:34:07

+0

如果你確實需要客戶端的信息,你可以嘗試模糊你的意圖。例如,如果您需要時間信息,則可以讓客戶端發送位置信息,或者對位置進行IP查找並計算出他的時區。 – bdares 2011-05-27 15:49:40

+0

是的,這就是我的想法。添加看起來有用的隨機和無用數據,然後丟棄這個數據服務器端來屏蔽我實際需要的數據。通過默默無聞的安全性,但我想它必須完成 – Matt 2011-05-27 15:52:52

1

沒有之前防止反編譯的方法。混淆使反編譯的結果更難使用,但專用的黑帽仍然可以使用它。

+0

確切地說,我如何在應用程序上創建敏感數據並將其發送到服務器,而不會讀取數據或創建敏感數據的方法被發現? – Matt 2011-05-27 15:16:21

+0

您可以使用非對稱加密(RSA是最常見的),其中您的應用程序只有公鑰...您使用公鑰對數據進行加密,並且服務器使用私鑰對其進行解密。我不確定這會比僅使用https更安全(但它可以防止中間人攻擊)。 – mah 2011-05-27 15:56:16

+0

但通過反編譯,黑帽會在通過RSA加密之前看到我的數據。 SSL(我相信)對傳輸來說足夠好,這是我需要/希望保護的數據創建。 – Matt 2011-05-27 16:03:02

0

我發現的最佳組合是DojoToolkit和高級模式下的Closure編譯器。

高級模式下的關閉使JavaScript代碼幾乎不可能進行反向工程,即使在通過美化器之後。一旦您的JavaScript代碼被混淆,超出了任何認可和反向工程的可能性,您的HTML將不會透露您的許多祕密。

此鏈接,使用Dojo Toolkit與關閉編譯器在高級模式下的移動應用:

http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf?by-user=t

如果使用關閉編譯器,你就可以扔在JavaScript中的加密引擎書面方式,然後加密你的JSON數據。隨着Closure Compiler提供的級別混淆,人們很難對您的代碼進行反向工程,以發現您用來解密的密鑰。