簡體   English   中英

如何防止任何人與我的服務器通信,除了我的Android應用程序

[英]How can I prevent anyone from communicating with my server except my Android app

我在Google應用引擎上安裝了休息服務器,我只希望我的應用能夠撥打我的服務器。

我可以在谷歌應用程序引擎上打開一個安全選項來實現這個目標嗎? 如果不是我能做什么?

我知道您可以通過以下方式限制對某些頁面的訪問,但我不確定它是否可以應用於REST調用

<security-constraint>
        <web-resource-collection>
            <url-pattern>/cron/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>admin</role-name>
        </auth-constraint>
</security-constraint>

在openssl中生成privatekey / publickey對。 在應用程序分發中分發公鑰。 有一個名為appName的自定義http標頭,並加密appname(一個唯一的常量不可預測位大號)並發送它。 確保您的代碼經過混淆,以便沒有人能夠查看appname。 然后,即使有人跟蹤http調用,您也在進行加密,因此appname將顯示為加密值。 在服務器端使用私鑰解密appname。 希望這可以幫助。

(已經有三個答案,並且在這個問題上我都有不同的想法 - 所以我認為這是一個很好的問題。)

我的理解是這樣做(谷歌)的推薦/規范方式是OATH2。 谷歌已經認識到OATH2很棘手,他們嘗試簡單的就是雲端點,以及針對Android客戶端的Google Play服務。 有關這方面的說明如下:

https://developers.google.com/appengine/docs/java/endpoints/consume_android#Java_Making_authenticated_calls

請注意,雖然文檔強調用戶身份驗證,但它也支持應用程序身份驗證。

我不知道(但是想)是非端點應用程序如何做同樣的事情,所以我想這只是一個部分答案。

簡短的回答是,你不能,至少不是完全安全。

https://security.stackexchange.com/questions/826/how-can-i-securely-authenticate-the-client-application-sending-me-data

答案很長,你可以讓黑客很難。 通常,這通過在應用程序中嵌入密鑰,對其進行模糊處理以及對獲取密鑰的代碼進行模糊處理來實現。 這並不能讓某人找到鑰匙,只是更難。

其中一個更強大的消費者系統是微軟的Silverlight DRM,你可能想調查它是如何工作的: http//www.iis.net/learn/media/iis-media-services/content-protection-in-silverlight

您可以在訪問時使所有REST服務都需要訪問密鑰和密鑰。 然后,應用程序可以將這些存儲在配置設置下,並在發送到App Store時保留為空白。

然后,當您下載應用程序時,您可以進入配置設置並插入您為REST服務設置的密鑰和密鑰。 (這樣可以防止任何人訪問服務,因為您手動添加了所使用的Key + Secret)

我建議在服務器上設置所有未經授權的訪問嘗試的IP日志,這樣如果有人通過無效訪問嘗試向您的Web服務發送垃圾郵件,您就可以創建黑名單。

然后最重要的是你可以通過HTTPS完成這一切。

選項很少:

  • 首先你可以通過IP限制。 如果你的Android應用程序每次都獲得動態IP,這不是一個好方法。
  • 其次,你可以在服務器和客戶端上使用一些只有你知道的算法。 服務器可以將數據發送到客戶端,客戶端運行該算法並修改數據。 然后發送回服務器。 服務器還運行該算法並檢查響應。 如果響應等於服務器計算的響應,則服務器知道客戶端已獲得授權。 在這種情況下,從服務器發送的初始數據應該每次都不同。
  • 第三,您可以使用一些公開的散列函數而不是您自己的算法。 這個想法是一樣的。 服務器使用相同的散列函數,並檢查客戶端的響應是否與其計算相同。

執行此操作的規范方法是使用SSL和客戶端證書。 我不確定App Engine是否支持此功能。

但請注意,如果您正在分發您的APK,那么您不能僅依賴於隨APK分發的任何內容 - 這是可能的(如果不太可能,取決於您作為目標的高調)提取欺騙應用程序所需的任何信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM