2014-03-28 39 views
2

現在我正在開發一個Android應用程序,我對此完全陌生。將Web服務訪問限制爲只有一個應用程序

我想確保我的網絡服務只能通過我的應用程序訪問。

我的背景是PHP。在PHP中,我不需要擔心這樣的事情,因爲所有東西都在服務器上運行。

在Java和尤其是Android編程的情況下,情況有所不同。即使使用加密。每個人都可以打開一個APK,看看如何訪問Web服務。那麼有沒有辦法隱藏或混淆對Web服務的訪問,所以只有我的應用程序才能使用它?

出於測試目的,我沒有添加任何安全或加密。這是我現在正在做的Web服務器的基本呼叫:

String url = "http://thisismyurl.com/a.php?action=get"; 
String result = Web.executeWeb(url); 

public class Web { 

    public static String executeWeb(final String url) { 

     final StringBuilder sb = new StringBuilder(); 

     Thread thread = new Thread(new Runnable() { 
      public void run() 
       { 
       try 
       { 
        InputStream is = (InputStream) new URL(url).getContent(); 
        BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
        String result, line = reader.readLine(); 
        result = line; 
        while((line=reader.readLine())!=null){ 
         result+=line; 
        } 

        sb.append(result); 
        //System.out.println(result);  
        //Log.i("My Response :: ", result); 

       } catch (Exception e) 
       { 
       // TODO: handle exception 
       } 
      } 
      }); 

     thread.start(); 
     try { 
      thread.join(); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     return sb.toString(); 

    } 

} 

我該如何將這個從黑客的窺探中隱藏起來? ;-)這甚至可能嗎?

在此先感謝!

回答

1

在TLS中使用(自簽名)證書部署客戶端身份驗證。

這種配置可在大多數Web服務器和Java應用程序服務器上啓用,您通常也可以配置Web或應用服務器中,這樣你可以檢索私鑰的是用於客戶端證書的方式驗證自己。

請注意,HTTPS在任何網絡流量之前使用SSL(或現在的TLS),所以您不能在您的應用程序中編程,它確實需要服務器配置。

如何配置爲Apache 2

0

使用應用程序的ID(如IMEI)爲您的Web服務調用的參數檢查this link。您需要在服務器端的數據庫中創建一個表格,它將存儲所有註冊的設備。現在只有這些註冊的設備可以訪問您的Web服務。這是我的想法,還應該有其他想法。

相關問題