2012-01-15 85 views
2

我認爲這有點難以解釋。基本上,我有一個連接到Web應用程序的Android應用程序。我想要從網絡應用程序製作的請求,而不是在其他地方製作。順便說一句,我使用PHP。因此,如果說,我從一個名爲「send_data.php?foo = bar」的android應用發出請求,我希望該請求不起作用,除非它確實從android應用單獨發送。所以我不能去我的瀏覽器並鍵入「send_data.php?foo = bar」,它會起作用。如何只能從應用程序發送請求

我想到了一種方法,那就是在我的請求中有一個祕密值,例如「pw = 12345」,然後在PHP腳本中有if($pw = "12345"),但後來我發現有人可以用數據包嗅探他們的手機,輕鬆獲得那個祕密價值。有什麼辦法可以做到這一點?

+1

使用ssl(https)將數據從android應用程序發送到Web應用程序。 – Erik 2012-01-15 03:28:53

回答

0

卡西姆,你可以做到這一點

的一種方法是使用一個職位,而不是獲取變量,然後訪問該鏈接爲SSL鏈接。這樣做會確保發佈的信息被加密。如果你做不到,你可以像我一樣做。我加密了我發送到服務器上的電話的數據。它在手機上保持加密狀態,只有在應用程序中使用時纔會解密。這樣,如果有人嗅探我的連接並獲取數據,這並不重要。這幾乎是無用的。希望這可以幫助。

+0

但我怎麼加密它?我將使用哪種方法來加密數據,但是可逆(可解密)? – Qasim 2012-01-15 03:38:06

+0

只要密鑰存儲在服務器和手機上,並且沒有傳輸,就可以很好地防止嗅探,您可以使用任意數量的加密方法。我用我的DES(不是最安全的,但足夠我)。 PHP頁面在通過HTTPS以JSON格式發送數據之前加密數據。手機接受數據並將其存儲在數據庫中。稍後,當應用程序需要使用這些數據時,它會對其進行解密。就像核磁共振說,關鍵可以在你的來源找到足夠的工作。訣竅是儘可能使用Proguard之類的代碼來模糊你的代碼。 – 2012-01-15 13:25:59

0

沒有完美的答案。我會讓網站發送一個用於加密數據的密鑰,但即使如此,也可能會被打敗。

1

我不認爲這可以以密碼安全的方式完成。手機應用程序本身是公開數據,因此存儲在應用程序內的任何密鑰最終都可以被窺探。

這就是說,你可以去合理的長度混淆密鑰,以加密格式存儲它,隱藏它在哪裏,等等。這可能足以威懾你的目的。但重要的是要知道,這只是殼牌遊戲,應用程序中的鍵是不安全的,並且一個有動力的攻擊者最終會提取它。

您可能考慮的另一種方法是讓用戶進行身份驗證,然後您就可以知道誰正在連接,並且可以將服務器響應作爲基礎。用戶身份驗證的密碼強大。

0

似乎您對請求身份驗證感到疑惑,也擔心有人在傳輸過程中嗅探數據。使用https是減輕所有風險的唯一方法。請參閱this question的接受答案。答案中提供的博客鏈接值得一讀。

相關問題