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