java - 将 Web 服务访问权限限制为仅一个应用程序

标签 java android

现在我正在开发一个 Android 应用程序,我对此完全陌生。

我想确保我的网络服务只能通过我的应用访问。

我的背景是 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 在任何网络流量之前使用 SSL(或现在的 TLS),因此您不能在您的应用程序中对此进行编程,它确实需要服务器配置。

检查 this link关于如何为 Apache 2 配置。

关于java - 将 Web 服务访问权限限制为仅一个应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22708227/

相关文章:

java - Android(Eclipse)找不到google-play-services_lib.apk尝试了多种解决方案

android - View 的 layout_weight 值异常

android - 在 Android M 上请求 SYSTEM 权限?

android - onStartCommand 在服务 android 中只调用一次?

java - 建议 : Java GUI Using JFrame

java - 当用户完成输入文本时将焦点移动到下一个文本框

java - 更改 "File"参数的值而不创建类的新实例

java - 如何将 Scala Seq 传递给 Java 可变参数

java - 在 Java 中,如何刷新 CPU 内存缓存以便它从 RAM 内存中检索最新的?

java - 使用 java 循环运行 MySQL