2011-12-19 114 views
7

我需要通過android應用程序向Web服務發出請求。 可以根據需要設計web服務。安全的Web服務請求

在我看來,不管我選擇哪種方法,有人想要破解它,只需要逆向工程我的Android應用程序代碼(這不是非常困難),並且我可以看到我正在做什麼,然後我加密數據,使用硬編碼密碼或任何其他解決方案。

是否有解決方案將100%安全?

+0

看看這個。我想他們問的是同樣的問題:http://stackoverflow.com/questions/2320937/securing-communication-from-android-to-a-web-service – eboix 2011-12-19 23:09:05

+0

我在提問之前已經閱讀過這個答案 - 但我不認爲它解決了逆向工程應用程序的問題。 – 2011-12-20 10:47:51

+0

您可以對數據進行加密,將密鑰的散列存儲在數據庫中,並對數據庫進行加密。這應該是更難以破解 – Mal 2011-12-20 12:11:21

回答

6

沒有100%安全,所有你能做的就是讓你的攻擊者更難。事情你可以考慮:

  • 加密 - 通過加密通道傳遞您的請求將會停止 基本嗅探(這可以用MITM被反擊)

  • 混淆 - 使你的意圖很難理解當他們反編譯你的應用程序

的第二部分,這是緩解 - 當你的應用程序已經被破壞的通知和處理的能力。處理這種情況的典型方法是在首次運行時爲每個客戶端分配一個唯一的令牌,然後將其作爲參數傳遞給您的服務。

這樣,如果有人反編譯你的應用程序,並計算出如何調用你的服務,你至少可以開始監視濫用請求的來源,並監視可疑行爲(即在短時間內來自同一個鍵的多個請求跨越不同的IP地址)。從那裏你可以開始阻止鍵。

+1

+1良好的答案,最好的希望 - 準備最糟糕的 – amelvin 2012-02-01 23:22:16

+0

看到這個http://shabbirdhangot.wordpress.com/2014/07/12/secure-web-service-url-in-android/ – 2014-08-11 07:43:14

2

你擔心「黑客攻擊」,但任何安全性討論的基礎都是定義風險。

你想要防範什麼?

例如,您是否試圖防止攻擊者讀取其他人與服務器的連接?

此方案的一個簡單而安全的解決方案是使用非對稱密鑰交換作爲您的對稱加密密鑰,或使用執行此操作的現有協議(例如HTTPS)。嵌入服務器的私鑰(或使用HTTPS的證書)來抵禦中間人攻擊。逆向工程您的應用程序將無助於攻擊者。