Java 仅将web服务访问限制为一个应用程序

Java 仅将web服务访问限制为一个应用程序,java,android,Java,Android,现在我正在开发一个android应用程序,我对这个完全陌生 我想确保我的web服务只能通过我的应用程序访问 我的背景是PHP。在PHP中,我不需要担心任何类似的事情,因为一切都在服务器上运行 对于Java,尤其是Android编程,情况就不同了。即使是加密。每个人都可以打开一个APK,看看web服务是如何被访问的。那么,有没有办法隐藏或混淆对web服务的访问,以便只有我的应用程序才能使用它 出于测试目的,我没有添加任何安全性或加密。这是我现在对web服务器的基本调用: String url =

现在我正在开发一个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();

    }   

}
我该如何在黑客窥探的目光下隐藏这一点?;-)这可能吗


提前谢谢

在TLS中使用(自签名)证书部署客户端身份验证

这种配置可以在大多数web服务器和Java应用程序服务器上启用,并且您通常也可以以这样一种方式配置web或应用程序服务器,即您可以检索客户端用于自我验证的私钥的证书

请注意,HTTPS在任何web流量之前都使用SSL(或现在的TLS),因此您无法在应用程序中对此进行编程,它确实需要服务器配置

检查如何配置Apache 2。

在webservice调用中使用应用程序的ID(如IMEI)作为参数。您需要在服务器端的数据库中创建一个表,该表将存储所有注册的设备。现在只有这些注册设备才能访问您的Web服务。这是我的想法,应该还有其他想法